【发布时间】:2012-12-19 20:33:17
【问题描述】:
目标是:
- 创建文件读取流。
- 将其通过管道传输到 gzip (
zlib.createGzip()) -
然后将zlib输出的读取流通过管道传输到:
1) HTTP
response对象2) 和可写文件流以保存 gzip 后的输出。
现在我可以降到 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 中工作吗?
【问题讨论】:
标签: node.js gzip zlib gzipstream node.js-stream