如何使用OneDrive REST API上传文件到OneDrive?

9
请允许我解释一下我正在做什么以及如何做。
我正在尝试使用Onedrive的REST API上传文件。源自:OneDrive API文档
我使用了OneDrive碎片的方法来上传文件,因为文件可能会非常大(高达5GB)或者非常小(1KB),具体取决于用户。
目前,我使用POST-MAN Chrome扩展程序调用API。
我的操作步骤如下:
1. 生成访问令牌。 2. 创建会话并接收上传URL。 3. 使用PUT请求上传文件。
选中要上传的文件(文件大小: 729676295字节) enter image description here 添加标头并发送请求: enter image description here 结果如下: enter image description here 但是它说最大片段大小为67108864字节,所以我更改了以下值:
content-length: 67108864和 content-range:bytes 0-67108863/729676295
然后我收到这个错误消息:“声明的片段长度与提供的字节数不匹配” enter image description here 请帮助我找出在content-length和content-range中应该传递什么。非常感谢您的关注。
2个回答

6

终于,在经过两天的奋斗后,感谢上帝我找到了问题所在。

以下是需要记住的一些要点:

  1. 你需要将文件分成相等的部分并保存在某个地方,然后将每个部分分别上传到创建会话后获得的同一URL上。
  2. Content-Length 必须是你上传的所有碎片的文件字节数之和。
  3. Content-Range 应该是这样的:0-{fragmentLength-1}/{totalNumberOfBytesOfFile}(与 content-length 相同),从下一个碎片开始,Content-Range 将是{uploadedBytes}-{uploadedBytes+nextSetOfBytes-1}/{totalNumberOfBytesOfFile}

注意:下一组字节应该和前一组一样长。不用担心,因为最后一个碎片可能不同。

P.S:请不要使用成功上传碎片后收到的 content-range。


1
你好,你的解决方案也解决了我的问题,谢谢。 - Amitesh Kumar

2

enter image description here

在上传文件时,{totalNumberOfBytesOfFile}并不等同于content-length

Content-Length是当前片段的字节数。

以上图片展示了上传一个4917字节文件的示例。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接