目标是:
>创建文件读取流。
>将其管理为gzip(zlib.createGzip())
>然后将zlib输出的读取流管理到:
1)HTTP响应对象
现在我可以做到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);