Tôi đã tìm ra điều này (cảm ơn Timothy!). Vấn đề là sự hiểu biết của tôi về tất cả các công nghệ này và cách chúng khớp với nhau. Đối với bất kỳ ai quan tâm đến việc hiển thị hình ảnh từ MongoDB GridFS bằng cách sử dụng Node, Express và Jade ...
Tài liệu của tôi trong MongoDB có tham chiếu đến Hình ảnh được lưu trữ trong GridFS là một ObjectId được lưu trữ là một chuỗi. ví dụ. MyEntity {ImageId: '4f6d39ab519b481eb4a5cf52'} < - NB: Biểu diễn chuỗi của ObjectId. Lý do tôi lưu trữ nó như là một chuỗi là vì lưu trữ ObjectId đã cho tôi một nỗi đau trong định tuyến như nó đã được vẽ như nhị phân và tôi không thể tìm ra cách để sửa lỗi này. (Có lẽ ai đó có thể giúp đỡ ở đây?). Dù sao, giải pháp tôi có là dưới đây:
FileRepository - Lấy hình ảnh từ GridFS, tôi vượt qua trong một Id String, mà tôi sau đó chuyển sang một BSON ObjectId (bạn cũng có thể nhận được các tập tin theo tên tập tin) :
FileRepository.prototype.getFile = function(callback,id) {
var gs = new GridStore(this.db,new ObjectID(id), 'r');
gs.open(function(err,gs){
gs.read(callback);
});
};
Jade Template - Render các Markup HTML:
img(src='/data/#{myentity.ImageId}')
App.JS nộp - Routing (sử dụng Express) Tôi thiết lập '/ data /: imgtag' con đường giúp ảnh sống động:
app.get('/data/:imgtag', function(req, res) {
fileRepository.getFile(function(error,data) {
res.writeHead('200', {'Content-Type': 'image/png'});
res.end(data,'binary');
}, req.params.imgtag);
});
Và đó đã làm các công việc. Bất kỳ câu hỏi nào cho tôi biết :)
Nguồn
2012-03-24 03:30:27
Khắc phục loại mime hoặc phát hiện ra từ gridfs –
Cảm ơn Timothy, đã chỉ cho tôi đúng hướng.Có một vấn đề rất khác tôi cần phải giải quyết vì vậy tôi đăng giải pháp của tôi dưới đây để hoàn thành. –