节点 js 流待处理
Node js stream is pending
我有以下 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
导致内容不显示
所以我的问题是我做错了什么?
您没有结束您的回复,这就是它处于待处理状态的原因。我的建议是在可读流的 end
事件上调用 res.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();
});;
我有以下 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
导致内容不显示
所以我的问题是我做错了什么?
您没有结束您的回复,这就是它处于待处理状态的原因。我的建议是在可读流的 end
事件上调用 res.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();
});;