在expression式/ nodejs中附加一个响应stream

使用ExpressJs时,我无法发回stream。 有人可以看看它,并帮助我了解我在这个代码中犯了什么错误吗?

这是我发回的.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工作正常(我testing写入本地文件,它没有写入二进制数据到该文件),所以出于某种原因,响应不起作用。

我没有得到任何错误张贴在这里。 我看到我的回应永远不会回来,并在很长一段时间后超时。

任何build议将不胜感激。

从这个答案 。 也许尝试删除您的res.status(200)或执行以下操作

 gridReadStream.on('data', function(data) { res.write(data); }); gridReadStream.on('end', function() { res.status(200).end(); }); 

不确定,坚韧