将流传输到s3.upload()

我目前正在使用名为s3-upload-stream的node.js插件将非常大的文件流式传输到Amazon

S3。它使用了多部分的API,并且在大多数情况下效果很好。

但是,该模块显示了它的年龄,我已经不得不对其进行修改(作者也已弃用了它)。今天,我遇到了另一个与亚马逊有关的问题,我真的很想接受作者的建议,并开始使用官方的aws-

sdk完成上传。

但。

官方的SDK似乎不支持管道到s3.upload()。s3.upload的本质是,您必须将可读流作为参数传递给S3构造函数。

我大约有120多个用户代码模块,可以执行各种文件处理,并且它们与输出的最终目标无关。引擎将它们传递给可传递的可写输出流,然后传递给它。我不能在不向所有模块添加代码的情况下将AWS.S3它们交给对象并要求他们调用upload()它。我之所以使用s3-upload-

stream它是因为它支持管道。

有什么方法可以使aws-sdk s3.upload()可以通过流传输到其中?

回答:

upload()用node.js stream.PassThrough()流包装S3 函数。

这是一个例子:

inputStream

.pipe(uploadFromStream(s3));

function uploadFromStream(s3) {

var pass = new stream.PassThrough();

var params = {Bucket: BUCKET, Key: KEY, Body: pass};

s3.upload(params, function(err, data) {

console.log(err, data);

});

return pass;

}

以上是 将流传输到s3.upload() 的全部内容, 来源链接: utcz.com/qa/412752.html

回到顶部