【问题标题】:Retrieve image from mongoDB从 mongoDB 中检索图像
【发布时间】:2014-12-05 21:49:40
【问题描述】:

我正在使用 gridfs,所以我的 monDB 中有:

fs.chunks:

{
        "_id" : ObjectId("542e684a8a1cec178a172673"),
        "n" : 1,
        "data" : BinData(0,"2N6DSSfbCN/LLacNDYrJUQDEZgimMUwFpQGoJP0RU19Bi4PM82DjrUnKhE/P9v7P8ZveD1oDpFBM0iml9NE3WQmAvYFoG+nhD73Jm4N9b4LpylaAN5Ef+gVdgGSTAfSUwOikXoVick5pSQCkRmTCU5NT9VVfjHdAx74/ZhFRj+TIRjzlAhzkACBElzgMwGCo7tX+FYrpQLJ5KRmXiwFFwsNtHHzXiK1eu+CG1FumhGpA/qdG8CdDgD1xUHEcerMGO/eLGR9ML7ni/VjXxWzqp2j5DG2/WuKNv7xd3Kz/vr0MctJhuaBIl35YrKhdLnzqDa0uDa6bm4jz+eNyAI2hQbayGo4kVPFe8W7wFpY7qfBvnB9kbocxfZSdADDUNwYaydpT8lIcKEN9XfQJOYZvHp0El"),
        "files_id" : ObjectId("542e684a8a1cec178a172671")
}

fs.files:

{
        "_id" : ObjectId("542e65378axdeckhb0"),
        "uploadDate" : ISODate("2012-11-01"),
        "length" : 15673,
        "chunkSize" : 33222,
        "md5" : "f66e6654854a28e3672cfhds334d223b55a1"
}

我在做:

var fileId = mongoose.Types.ObjectId(id);
var gridStore = new GridStore(db, fileId, 'r');

gridStore.open(function (err, gridStore) {
   console.log(gridStore.uploadDate);
});

我明白了:

2012-11-01

但我想显示图片 我尝试了类似的方法,但根本不清楚:

 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
        );
});

app.listen(3000);

感谢您的帮助!

【问题讨论】:

  • 如果您console.log(data) 并且结果输出以2N6DSSfbCN 开头,那么您需要将res.end(data, 'binary') 更改为res.end(data, 'base64')
  • 感谢您的帮助。但我的问题是做 gridstore.open 和 app.get 之间的链接

标签: node.js mongodb mongoose gridfs gridfs-stream


【解决方案1】:

首先,看看GridStore documentation。有两种方法可以解决这个问题:

一种是在您的gridStore.open() 函数中调用gridStore.read()。您可以将数据从回调发送到响应。

gridStore.read(function(err, data) {
    res.write(data);
    res.end();
});

回调中的数据参数将包含您的文件。

另一种选择是使用gridStore.stream() 并将流传输到响应。

gridStore.stream().pipe(res);

【讨论】:

    猜你喜欢
    • 2014-12-05
    • 1970-01-01
    • 1970-01-01
    • 2017-07-05
    • 1970-01-01
    • 2017-09-04
    • 2019-11-09
    • 2012-09-22
    • 1970-01-01
    相关资源
    最近更新 更多