4

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

我希望我能做到这一点:

res.send (cloudInputStream);

但这不起作用。Express 的发送需要一个正文或一个缓冲区,但显然不是输入流。

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

cloudInputStream.pipe (responseOutputStream);

这可能吗?

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

有什么想法吗?

4

2 回答 2

12

您所要做的就是cloudInputStream.pipe(res)在设置标题之后。

于 2013-01-26T08:26:55.503 回答
4

你可以做任何节点可以做的事情。对流使用管道,对标头字段使用 res.set,或使用 res.sendfile。

于 2013-01-26T00:42:16.530 回答