目标是:
- 创建一个文件读取流。
- 将其传输到gzip (
zlib.createGzip()
)。 然后将zlib输出的读取流传输到:
1) HTTP
response
对象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);
...这个方法运行良好,但我还需要将压缩后的数据保存到文件中,这样我就不需要每次重新压缩,并且能够直接流式传输已经压缩的数据作为响应。
那么在Node中如何同时将一个可读流导入两个可写流?
在Node 0.8.x版本中,sourceFileStream.pipe(gzip).pipe(response).pipe(targetFileStream);
是否可行?
pipe(response)
只是从gzip
而不是raw
获取输入。 - doup