如何向node.js / express'发送或获取其原始输出流提供输入流?

时间:2013-01-26 00:17:34

标签: node.js stream express

我在我的快递应用程序中提供了一个路由,它提供云文件的内容作为下载。我可以访问云文件的输入流,我想将其直接传递到响应的输出流中。但是,我正在使用express,它似乎不支持输入流。

我希望我能做到这一点:

res.send (cloudInputStream);

但这不起作用。 Express'send采用正文或缓冲区,但显然不是输入流。

既然如此,我想做的是使用res.setHeader()设置标头,然后访问原始输出流,然后:

cloudInputStream.pipe (responseOutputStream);

这可能吗?

或者,我可以将输入流读入缓冲区,并提供要发送的缓冲区。但是,这会将整个云文件的内容一次性读入内存,我想避免这种情况。

有什么想法吗?

2 个答案:

答案 0 :(得分:10)

设置标题后,您只需cloudInputStream.pipe(res)即可。

答案 1 :(得分:4)

你可以做任何节点都可以做的事情。使用pipe作为流,使用res.set作为头字段,或res.sendfile。