从NodeJS流式传输到Dropbox

时间:2018-02-23 10:07:31

标签: node.js streaming dropbox dropbox-api

我们的系统在与Dropbox交互时需要使用内部安全检查,因此我们不能将客户端SDK用于Dropbox。

我们宁愿上传到我们自己的端点,应用安全检查,然后将传入的请求流式传输到dropbox。

由于有一个较旧的NodeJS Dropbox SDK支持管道,我在这里做的很简短,但新的SDK没有。 旧SDK: https://www.npmjs.com/package/dropbox-node

我们希望接收传入的上传请求,并在它进入时将其转发到Dropbox。(因此,如果我们首先将整个内容上传到我们的服务器然后上传到Dropbox,则阻止上传时间延长两倍)

有什么方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我的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