通过HTTP API将大文件上传到Dropbox

问题描述 投票:1回答:1

我目前正在将我的网络服务器上文件的上传机制实现到我的Dropbox应用程序目录中。

如API文档所述,有/ upload端点( https://www.dropbox.com/developers/documentation/http/documentation#files-upload ),它可以接受最大150MB的文件。 但是,我正在处理的图像和视频的最大大小可能为2GB。

因此,我需要使用upload_session端点。 有一个端点可以启动会话( https://www.dropbox.com/developers/documentation/http/documentation#files-upload_session-start ),以添加数据并完成会话。

我目前不清楚的是如何正确使用这些端点。 我是否必须将服务器上的文件拆分为150MB的块(如何处理视频文件?),然后使用/ start上传第一个块,使用/ append上传下一个块,使用/ finish上传最后一个? 还是可以只指定文件和API(?)来进行拆分? 显然不是,但是我莫名其妙地无法理解应该如何在网络服务器上计算,拆分和存储数据块,而又不会丢失会话之间的会话...

任何建议或进一步的领导联系,不胜感激。 谢谢!

php dropbox dropbox-api
1个回答
2
投票

正如Greg在评论中提到的那样,您可以决定如何管理文件的“块”。 除了他的.NET示例之外,Dropbox在Dropbox API v2 JavaScript SDK的JavaScript 上传示例中还具有良好的上传会话实现。

从高层次上讲,您正在将文件拆分为较小的大小(也称为“块”),并将文件按特定顺序传递给upload_session机制。 上载机制包含几个部分,需要按以下顺序使用:

  1. 呼叫/ files / upload_session / start 在以下方法中,将生成的session_id用作参数,以便Dropbox知道您正在与哪个会话进行交互。
  2. 逐步将文件的每个“块”传递到/ files / upload_session / append_v2 。 需要注意的几件事:

    • 一次调用将返回一个cursor ,该cursor用于以特定顺序遍历文件的块。 在每次对该方法的连续调用中,它将作为参数传递(在每个响应上更新游标)。
    • 最终调用必须包含属性"close": true ,它将关闭会话,以便可以将其上载。
  3. 将最终cursor (和commit信息)传递到/ files / upload_session / finish 。 如果您在响应中看到新的文件元数据,那么就做到了

© www.soinside.com 2019 - 2024. All rights reserved.