将流传输到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