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

文件名含#时,OneDrive批量创建上传会话返回400错误

问题

我有个叫File#.txt的文件,用OneDrive的createUploadSession接口上传时,单独调用API能返回200成功,但用批量请求(batch request)调用相同的URL和请求体,就会返回400 Bad Request。而且只有文件名带#的时候才会出这问题,希望批量请求能和单请求行为一致。

单独请求的参数:

  • URL:
    https://graph.microsoft.com/v1.0/me/drive/items/{itemId}/File#.txt:/createUploadSession
    
  • 请求体:
    {
      "item": {
        "@microsoft.graph.conflictBehavior": "replace"
      }
    }
    
原因

#在URL里是锚点标记,单独请求时,HTTP客户端(比如浏览器、Postman这类工具)会自动把它编码成%23;但批量请求是把URL放在JSON体里发送的,服务端不会自动处理这个特殊字符,会把#当成锚点解析,导致文件路径识别错误,所以返回400。

解决办法

把批量请求子URL里的#手动换成URL编码后的%23就行,修改后的子URL是:

https://graph.microsoft.com/v1.0/me/drive/items/{itemId}/File%23.txt:/createUploadSession

举个完整的批量请求例子:

{
  "requests": [
    {
      "id": "1",
      "method": "POST",
      "url": "/me/drive/items/{itemId}/File%23.txt:/createUploadSession",
      "body": {
        "item": {
          "@microsoft.graph.conflictBehavior": "replace"
        }
      },
      "headers": {
        "Content-Type": "application/json"
      }
    }
  ]
}

这样服务端就能正确解析文件路径,批量请求就会和单请求一样返回成功了。

内容的提问来源于stack exchange,提问作者Vinanth S Bharadwaj

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 06:52:43