目标是:
zlib.createGzip()
)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);
...效果很好,但我还需要将压缩后的数据保存到文件中,这样我就不需要每次都进行zip压缩并能够直接流式传输压缩后的数据作为响应。
那么,如何在Node中一次将一个可读流传输到两个可写流中?
sourceFileStream.pipe(gzip).pipe(response).pipe(targetFileStream);
在Node 0.8.x中可以工作吗? 最佳答案
管道链接/拆分不起作用,就像您在此处尝试将其发送到两个不同的后续步骤一样:sourceFileStream.pipe(gzip).pipe(response);
但是,您可以将相同的可读流传递给两个可写流,例如:
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);
关于node.js - 如何在Node.js中一次将一个可读流传输到两个可写流中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14173488/