我正在使用nodejs中的一个库,它可以从读取流中读取。我目前正在打开一个文件读取流,并将其传递给库。但是,我还需要在我正在读取的文件系统上创建文件。因此,步骤1是创建一个写文件流,并将我的数据流到文件中。
我不喜欢这个过程的一点是,当我完成时,我必须清理文件系统。有没有一种方法,我可以直接写到一个读取流,并完成这一切在一步?
编辑:具体示例(使用https://github.com/ctalkington/node-archiver):
// some route
function(req, res, next) {
var archive = archiver('zip');
res.attachment("icons.zip");
archive.pipe(res);
// I have to create files on file system
var stream1 = fs.createWriteStream("file1.txt");
var stream2 = fs.createWriteStream("file2.txt");
...
// all stuff is one streaming to file system
// now stream stuff from file system to archive
archive
.append(fs.createReadStream("file1.txt"), { name: 'file1.txt' })
.append(fs.createReadStream("file2.txt"), { name: 'file2.txt' })
.finalize();
}我不知道如何避免首先流到文件系统。
编辑:
简单的问题是:
我可以写到一个可读的流吗?
发布于 2014-08-08 18:15:55
似乎是这么简单的答案,真不敢相信我错过了这个。
看来我可以只使用PassThrough:
passthrough
类: stream.PassThrough# --这是一个简单地将输入字节传递到输出的转换流的简单实现。它的目的主要是用于示例和测试,但偶尔也会有一些用例,在这些用例中,它可以作为新类型流的构建块来使用。
发布于 2014-05-16 14:27:57
将可读流输送到响应或可写流。
要将管道输送到客户端,您可以执行以下操作:
// the response object is a writable stream too.
// Send the headres first (Dont forget these, and change the content type.)
res.writeHead(200, {
'Content-Type': 'application/pdf',
'Access-Control-Allow-Origin': '*'
});
var resStream = readableStm.pipe(res); // readableStm should be a READABLE stream
// listen to the finish ev.
resStream.on('finish', function () {
res.end();
});https://stackoverflow.com/questions/23697080
复制相似问题