Bạn có thể cần phải kiểm tra các giá trị của mình trong các tham số. Nhưng hy vọng điều này gần mẫu tối thiểu cung cấp một số trợ giúp:
Cập nhật
Và nó đã hữu ích, bởi vì nó làm nổi bật rằng bạn đang tra cứu _id
dưới dạng tên tệp. Thay vào đó, bạn nên làm điều này:
.createReadStream({
_id: req.param('filename')
})
nếu không
.createReadStream({
_id: mongoose.Types.ObjectId(req.param('filename'))
})
Kể từ _id
trường khác với tên tệp
app.js
var express = require('express');
var routes = require('./routes');
var http = require('http');
var path = require('path');
var app = express();
var mongoose = require('mongoose');
var Grid = require('gridfs-stream');
Grid.mongo = mongoose.mongo;
var conn = mongoose.createConnection('mongodb://localhost/mytest');
conn.once('open', function() {
console.log('opened connection');
gfs = Grid(conn.db);
// all environments
app.set('port', process.env.PORT || 3000);
app.use(express.logger('dev'));
app.use(app.router);
// development only
if ('development' == app.get('env')) {
app.use(express.errorHandler());
}
app.get('/', routes.index);
http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
});
route / index.js
exports.index = function(req, res){
res.set('Content-Type', 'image/jpeg');
gfs.createReadStream({
filename: 'receptor.jpg'
}).pipe(res);
};