我目前正在使用一个名为 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()
我可以将流传输到的东西?
原文由 womp 发布,翻译遵循 CC BY-SA 4.0 许可协议
用 node.js
stream.PassThrough()
流包装 S3upload()
函数。这是一个例子: