繁体   English   中英

如何创建临时写入流?

[英]How to create a temporary write stream?

我有一个文件流,我想在一个名为transformRead()的方法中传递,这个接受一个readStream和一个writeStream,但我不知道如何创建临时写入流...我是否必须使用文件? 我只想要一种从rs到ws的管道(),然后ws被gzip压缩并发送给响应。

            // Get file stream
            var rs = store.getReadStream(fileId);
            var ws = ?????; 

            // Execute transformation
            store.transformRead(rs, ws, fileId);

            var accept = req.headers['accept-encoding'] || '';

            // Compress data if supported by the client
            if (accept.match(/\bdeflate\b/)) {
                res.writeHead(200, {
                    'Content-Encoding': 'deflate',
                    'Content-Type': file.type
                });
                ws.pipe(zlib.createDeflate()).pipe(res);

            } else if (accept.match(/\bgzip\b/)) {
                res.writeHead(200, {
                    'Content-Encoding': 'gzip',
                    'Content-Type': file.type
                });
                ws.pipe(zlib.createGzip()).pipe(res);

            } else {
                res.writeHead(200, {});
                ws.pipe(res);
            }

使用through2可以轻松创建转换(读/写)流

最后,有人告诉我使用stream.PassThrough();

所以最简单的“原生”解决方案是:

var ws = new stream.PassThrough();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM