我在我的快递应用程序中提供了一个路由,它提供云文件的内容作为下载。我可以访问云文件的输入流,我想将其直接传递到响应的输出流中。但是,我正在使用express,它似乎不支持输入流。
我希望我能做到这一点:
res.send (cloudInputStream);
但这不起作用。 Express'send采用正文或缓冲区,但显然不是输入流。
既然如此,我想做的是使用res.setHeader()设置标头,然后访问原始输出流,然后:
cloudInputStream.pipe (responseOutputStream);
这可能吗?
或者,我可以将输入流读入缓冲区,并提供要发送的缓冲区。但是,这会将整个云文件的内容一次性读入内存,我想避免这种情况。
有什么想法吗?
答案 0 :(得分:10)
设置标题后,您只需cloudInputStream.pipe(res)
即可。
答案 1 :(得分:4)
你可以做任何节点都可以做的事情。使用pipe作为流,使用res.set作为头字段,或res.sendfile。