【问题标题】:How can I provide an input stream to node.js/express' send, or get its raw output stream?如何向 node.js/express 发送输入流或获取其原始输出流?
【发布时间】:2013-01-10 00:58:30
【问题描述】:

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

我希望我能做到这一点:

res.send (cloudInputStream);

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

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

cloudInputStream.pipe (responseOutputStream);

这可能吗?

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

有什么想法吗?

【问题讨论】:

    标签: node.js stream express


    【解决方案1】:

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

    【讨论】:

    • 谢谢!我不知道响应对象本身就是输出流。我的问题是如何获得该输出流。谢谢!
    • 什么是cloudInputStream?你能举一个关于“res.send”的更好的例子吗?
    【解决方案2】:

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

    【讨论】:

    • 谢谢,但问题没有那么笼统;也许是措辞不当。我不知道如何从文档中获取响应的输出流。 Ajay 的响应对我来说是缺失的细节 - 快速响应对象本身就是输出流,并且 express 使用 send 和 sendfile 等辅助方法装饰它。所以解决方案更容易通过管道传递到 res 对象本身。
    猜你喜欢
    • 2015-05-30
    • 1970-01-01
    • 1970-01-01
    • 2016-01-17
    • 2012-11-10
    • 2015-12-04
    • 2012-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多