将ReadableStream管道化为两个消费者:AWS SDK和Crypto

时间:2016-12-25 23:15:30

标签: node.js aws-sdk fs

我想将一个20千兆字节的文件上传到S3,并使用crypto api计算sha256校验和。目前,我可以使用两个可读流链接在一起的两个promises,但我想优化,以便我只能使用一个可读流。查看AWS SDK implementation,fillStream方法使用ReadableStream.read方法。但在我看来,向两个消费者发送数据块的方法是将一个事件处理程序附加到'data'事件。

根据ReadableStream,有两种模式,暂停和流动。那么附加一个事件处理程序会做什么呢?它会在我的读取或AWS SDK的读取中跳过数据块吗?它会触发从磁盘读取两次相同的数据吗?

是否还有其他方法可以使用crypto api和aws-ask包来优化磁盘访问?

1 个答案:

答案 0 :(得分:0)

您可以尝试同时将一个可读流传输到两个可写流,也可以编写一个自定义代码来侦听数据事件并写入两个流。

npm上还有一些模块可以将一个流分成两部分: