微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Node.js中一次将一个可读流管理成两个可写流?

目标是:

>创建文件读取流。
>将其管理为gzip(zlib.createGzip())
>然后将zlib输出的读取流管理到:

1)HTTP响应对象

2)和可写文件流,以保存gzipped的输出

现在我可以做到3.1:

var gzip = zlib.createGzip(),sourceFileStream = fs.createReadStream(sourceFilePath),targetFileStream = fs.createWriteStream(targetFilePath);

response.setHeader('content-encoding','gzip');

sourceFileStream.pipe(gzip).pipe(response);

…它工作正常,但是我还需要将gzip压缩的数据保存到一个文件中,这样我就不需要每次都重新编译,并且可以直接将gzip压缩的数据作为响应流。

那么如何在Node中一次将一个可读流管理成两个可写入流?

将sourceFileStream.pipe(gzip).pipe(response).pipe(targetFileStream);在Node 0.8.x中工作?

解决方法

管道链接/拆分不像您在这里做的那样工作,将第一个发送到两个不同的后续步骤:

sourceFileStream.pipe(gzip的).pipe(响应);

但是,您可以将相同的可读流传输到两个可写入流中,例如:

var fs = require('fs');

var source = fs.createReadStream('source.txt');
var dest1 = fs.createWriteStream('dest1.txt');
var dest2 = fs.createWriteStream('dest2.txt');

source.pipe(dest1);
source.pipe(dest2);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐