我在使用ExpressJs回复发送流时遇到困难。有人可以调查它并帮助我理解我在这段代码中犯了哪些错误吗?
这是我发回的.mp4文件。
另外,我有一个我想在Mongo Grid中读取的文件,如下所示
{ "_id" : ObjectId("5702b22fc327277b338a4229"), "filename" : **"vsl_video1.mp4"**, "contentType" : "binary/octet-stream", "length" : 29442776, "chunkSize" : 261120, "uploadDate" : ISODate("2016-04-04T18:28:00.324Z"), "aliases" : null, "metadata" : null, "md5" : "33c0daecaf9d6d84408041dfe5724295" }
这是我的代码,它试图读取此文件并尝试在响应中附加它
filename = req.params.filename;
MongoClient.connect(mongoUrl, function(err, db) {
var gridReadStream, gridfs;
gridfs = Grid(db, Mongo);
gridReadStream = gridfs.createReadStream({
filename: filename
});
console.log('after creating the read stream');
console.log(filename);
gridReadStream.pipe(res);
db.close();
return res.status(200);
当我发布请求时,我可以打印两个控制台日志。我确信readstream工作正常(我测试写入本地文件并且它确实将二进制数据写入该文件),因此由于某种原因,响应无效。
我在这里发布没有任何错误。我看到我的反应永远不会回来,很长一段时间后就会超时。
任何建议都将不胜感激。
答案 0 :(得分:1)
来自this answer。也许可以尝试删除res.status(200)
或执行以下操作
gridReadStream.on('data', function(data) {
res.write(data);
});
gridReadStream.on('end', function() {
res.status(200).end();
});
根本不确定,很难