我想将内容流到客户端,这些内容可能存储在数据库中,他们会将其保存为文件。
显然,res.download可以很好地完成这项工作,但是.*函数都不接受流,只接受文件路径。
我看过res.download impl,它只设置了Content-Disposition头部,然后是一个发送文件。
因此,我可以使用这篇文章作为指南来实现这一点。Node.js: pipe stream to response freezes over HTTPS
但似乎我会错过res.send执行的所有包装方面。
我是否遗漏了什么,或者我应该只做管道而不去担心它--这里的最佳实践是什么?
目前正在创建临时文件,所以我现在可以只使用res.download。
发布于 2013-07-24 02:44:33
您可以直接流到响应对象(它是一个流)。
一个基本的文件流看起来像这样。
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
}
}这将负责绑定到data和end事件。
发布于 2015-01-31 09:38:24
确保来自客户端的AJAX请求设置了适当的“responseType”。例如,例如
$http({
method :'GET',
url : http://url,
params:{},
responseType: 'arraybuffer'
}).success()https://stackoverflow.com/questions/13106096
复制相似问题