目标是:
- 创建文件读取流。
- 将其通过管道传输到 gzip (
zlib.createGzip()
) 然后将 zlib 输出的读取流通过管道传输到:
1) HTTP
response
对象2)和可写文件流来保存压缩后的输出。
现在我可以做到 3.1:
var gzip = zlib.createGzip(),
sourceFileStream = fs.createReadStream(sourceFilePath),
targetFileStream = fs.createWriteStream(targetFilePath);
response.setHeader('Content-Encoding', 'gzip');
sourceFileStream.pipe(gzip).pipe(response);
...效果很好,但我还需要将压缩后的数据保存到文件中,这样我就不需要每次都进行 regzip 并且能够直接流式传输压缩后的数据作为响应。
那么如何在 Node 中一次将一个可读流传输到两个可写流?
sourceFileStream.pipe(gzip).pipe(response).pipe(targetFileStream);
可以在 Node 0.8.x 中工作吗?