首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >流写入流到读取流

流写入流到读取流
EN

Stack Overflow用户
提问于 2014-05-16 13:56:54
回答 2查看 8.7K关注 0票数 3

我正在使用nodejs中的一个库,它可以从读取流中读取。我目前正在打开一个文件读取流,并将其传递给库。但是,我还需要在我正在读取的文件系统上创建文件。因此,步骤1是创建一个写文件流,并将我的数据流到文件中。

  1. 数据写入流->文件
  2. http响应<-读取流文件

我不喜欢这个过程的一点是,当我完成时,我必须清理文件系统。有没有一种方法,我可以直接写到一个读取流,并完成这一切在一步?

编辑:具体示例(使用https://github.com/ctalkington/node-archiver):

代码语言:javascript
复制
// 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();

}

我不知道如何避免首先流到文件系统。

编辑:

简单的问题是:

我可以写到一个可读的流吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-08 18:15:55

似乎是这么简单的答案,真不敢相信我错过了这个。

看来我可以只使用PassThrough:

passthrough

类: stream.PassThrough# --这是一个简单地将输入字节传递到输出的转换流的简单实现。它的目的主要是用于示例和测试,但偶尔也会有一些用例,在这些用例中,它可以作为新类型流的构建块来使用。

票数 2
EN

Stack Overflow用户

发布于 2014-05-16 14:27:57

将可读流输送到响应或可写流。

要将管道输送到客户端,您可以执行以下操作:

代码语言:javascript
复制
// 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();
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23697080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档