You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用onedrive-api的customEndpoint移动文件报错body需为字符串如何解决

问题根源
  1. 代码存在语法错误:请求体body对象提前闭合,name参数被放到了body配置之外,导致请求结构错误。
  2. one-drive-api库的customEndpoint方法不会自动序列化JSON格式的请求参数,直接传入普通JS对象不符合该方法对body参数的类型要求(仅支持流、字符串、Buffer三种类型)。
修复后的完整代码
exports.moveItem = (req, res) => {
  let { item_id, move_to_id, new_name } = req.body;
  oneDriveAPI.items
    .customEndpoint({
      accessToken: accessToken,
      URL: "/me/drive/items/" + item_id,
      method: 'PATCH',
      // 添加请求头标识JSON格式
      headers: {
        "Content-Type": "application/json"
      },
      // 序列化请求体为JSON字符串,同时修正参数结构
      body: JSON.stringify({
        parentReference: {
          id: move_to_id
        },
        name: new_name
      })
    })
    .then((r) => {
      res.status(200).send({ drives: r });
    })
    .catch((e) => {
      res.status(500).send({ error: e.message });
    });
};
核心修改说明
  • 修正了对象嵌套语法错误,将name参数移入请求体内部,符合微软OneDrive移动接口的参数规范
  • 使用JSON.stringify()将JS对象格式的请求参数转为字符串类型,匹配库对body参数的类型要求
  • 补充Content-Type: application/json请求头,告知服务端请求体为JSON格式,避免解析失败

内容的提问来源于stack exchange,提问作者nermineslimane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 11:15:04