如何使用OneDrive REST API 上传文件到OneDrive?
让我来解释一下我在做什么以及我是怎么做的.
我在做什么?
我正在尝试通过OneDrive的REST API上传一个文件。
来源:OneDrive API文档
我使用的是OneDrive的分片上传方法,因为文件可以大到5GB,也可以小到1KB(这取决于用户)。
目前,我是通过POST-MAN这个Chrome扩展来调用API的。
我是怎么做的?
- 生成了访问令牌
- 创建了会话并获得了上传的URL
- 使用PUT请求上传文件,如下所示
系统提示最大分片大小为67108864字节,所以我把以下值改了:
content-length : 67108864 和 content-range : bytes 0-67108863/729676295
但随后我收到了这个错误信息:声明的分片长度与提供的字节数不匹配。
请帮我弄清楚我应该在content-length和content-range中传递什么。
非常感谢你的关注。
相关文章:
- 暂无相关问题
2 个回答
6
最后,感谢上天,经过两天的挣扎,我终于找到了问题所在。
这里有几个要点需要记住:
- 你需要把一个文件分成若干个相等的部分,然后把它们保存到某个地方,并在创建会话后,分别上传这些部分到同一个网址。
- Content-Length 必须是你在所有上传请求中,上传的文件总字节数。
- Content-Range 的格式是:0-{fragmentLength-1}/{totalNumberOfBytesOfFile}(和 content-length 一样),接下来的部分的 Content-Range 则是 {uploadedBytes}-{uploadedBytes+nextSetOfBytes-1}/{totalNumberOfBytesOfFile}
注意:下一组字节的长度应该和前一组一样。别担心,因为最后一部分可以不同。
附注:不要使用在成功上传某个部分后收到的 content-range。