我目前正在将我的网络服务器上文件的上传机制实现到我的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(?)来进行拆分?显然不是,但是我不知何故应该如何计算,拆分并将块存储在我的网络服务器上,而又不丢失会话之间的会话...
任何建议或其他领导链接都将不胜感激。谢谢!
答案 0 :(得分:2)
正如Greg在评论中提到的那样,您决定如何管理文件的“块”。除他的.NET示例外,Dropbox在upload example的JavaScript Dropbox API v2 JavaScript SDK中具有良好的上载会话实现。
从高层次上讲,您正在将文件拆分为较小的大小(也称为“块”),并将文件按特定顺序传递给upload_session机制。上载机制包含几个部分,需要按以下顺序使用:
session_id
作为参数,以便Dropbox知道您正在与哪个会话进行交互。 将文件的每个“块”增量传递到/files/upload_session/append_v2。需要注意的几件事:
cursor
,该"close": true
用于以特定顺序遍历文件的块。在每次对该方法的连续调用中,它将作为参数传递(在每个响应上更新游标)。 cursor
,该属性将关闭会话,以便可以上载会话。将最终的commit
(和const winston = require('winston');
// logger configuration
var logger = new winston.Logger({
transports: [
new winston.transports.Console({
level:'info',
handleExceptions: false,
json: false,
colorize: true,
prettyPrint: true
})
],
exitOnError: false
});
logger.info('test1',{'test':'test2'}, 'test3?');
信息)传递到/files/upload_session/finish。如果您在响应中看到新的文件元数据,则您做到了!