如何在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);

相关文章

这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关...