我有以下node
路线:
router.route('/resource/:encodedString/:mediaType')
.all(function (req, res) {
var decoded = jwt.decode(req.params.encodedString, require('../secret')());
var mediaObject = decoded.mediaObject;
res.header('content-disposition', 'filename="' + mediaObject.fileName + req.params.mediaType + '"');
var stream = fs.createReadStream(mediaObject.targetDir + mediaObject.fileName + req.params.mediaType);
res.pipe(stream);
})
我的客户打电话给我。
然而,这并没有给我我想要的结果,因为一旦调用它,响应就会挂起。
Accept-Encoding:identity;q=1, *;q=0
Range:bytes=0-
Referer:http://localhost/myProject/
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.76 Safari/537.36
导致内容无法显示。
所以我的问题是我做错了什么?
答案 0 :(得分:1)
你没有结束你的回复,这就是它正在等待的原因。我的建议是在您的可读流的res.end()
事件上调用end
,例如:
var stream = fs.createReadStream(mediaObject.targetDir + mediaObject.fileName + req.params.mediaType);
res.pipe(stream);
stream.on('end', function () {
console.log("Reading operation completed.");
res.end();
});;