将节点/文件中的文件stream传输到客户端

我想stream内容到客户端可能存储在数据库,他们将保存为文件。

很明显res.download会很好地完成这项工作,但是没有一个响应函数接受一个stream,只有文件path。

我看看res.download impl,它只是设置Content-Disposition头,然后是一个发送文件。

所以我可以用这篇文章作为指导。 Node.js:响应的pipe道stream通过HTTPS冻结

但似乎我会错过所有res.send执行的包装方面。

我在这里错过了什么,或者我应该做pipe道而不用担心 – 这里最好的做法是什么?

目前创build临时文件,所以我现在可以使用res.download。

你可以直接stream到响应对象(这是一个Stream)。

一个基本的文件stream看起来像这样。

function(req, res, next) { if(req.url==="somethingorAnother") { res.setHeader("content-type", "some/type"); fs.createReadStream("./toSomeFile").pipe(res); } else { next(); // not our concern, pass along to next middleware function } } 

这将负责绑定dataend事件。

确保来自客户端的AJAX请求具有适当的“responseType”集。 比如像

 $http({ method :'GET', url : http://url, params:{}, responseType: 'arraybuffer' }).success()