【问题标题】:Streaming upload from NodeJS to Dropbox从 NodeJS 流式上传到 Dropbox
【发布时间】:2018-02-23 10:07:30
【问题描述】:
我们的系统在与 Dropbox 交互时需要使用内部安全检查,因此我们不能使用 Dropbox 的客户端 SDK。
我们宁愿上传到我们自己的端点,应用安全检查,然后将传入的请求流式传输到保管箱。
我在这里做得很短,因为有一个旧的 NodeJS Dropbox SDK 支持管道,但新的 SDK 不支持。
旧版 SDK:
https://www.npmjs.com/package/dropbox-node
我们希望接收传入的上传请求并将其转发到保管箱。(因此,如果我们先将整个内容上传到我们的服务器然后上传到保管箱,则可以防止上传时间增加一倍)
有没有办法解决这个问题?
【问题讨论】:
标签:
node.js
streaming
dropbox
dropbox-api
【解决方案1】:
我的 Dropbox NPM 模块 (dropbox-v2-api) 支持流式传输。它基于 HTTP API,因此您可以利用流。例子?我是这样看的:
const contentStream = fs.createReadStream('file.txt');
const securityChecks = ... //your security checks
const uploadStream = dropbox({
resource: 'files/upload',
parameters: { path: '/target/file/path' }
}, (err, result, response) => {
//upload finished
});
contentStream
.pipe(securityChecks)
.pipe(uploadStream);
全流支持示例here。