从mongodb检索图像数据并在浏览器上显示

时间:2018-03-01 10:13:35

标签: node.js mongodb express multer

{ _id: 5a97c9a9b5a49f188c222399,
    size: 44706,
    image:
     Binary {
       _bsontype: 'Binary',
       sub_type: 0,
       position: 44706,
       buffer: <Buffer 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 00 00 06 40 00 00 03 b4 08 02 00 00 00 72 55 6d 58 00 00 ae 69 49 44 41 54
78 da ec dd 07 78 56 e5 dd ... > },
    mimetype: 'image/png',
    encoding: '7bit',
    image_name: 'nodejs-frameworks.png' }

这是我在图片集中的数据。我发现很难将这些数据转换为图像。我尝试将图像数据转换为base64数据,但没有用。这是我的代码。

getImage: function (req, res) {
    let id = req.params.id;
    db.image.getImage(id, function (item) {
        console.log(item);
        res.contentType(item[0].mimetype);

        res.send(item[0].image.buffer.toString('base64'));
    });
}

getImage函数在另一个检索上述JSON数据的文件中调用getImage函数。我搜索并经历了不同的解决方案,但无法理解它们。请帮我。谢谢。

1 个答案:

答案 0 :(得分:0)

我无法正确解释这一点,但是代码工作正常。我能想到的一个原因是res.send没有发送正确的头类型,这就是res.write工作的原因(我不确定,只是一个假设)。

getImage: function (req, res) {
        let id = req.params.id;
        db.image.getImage(id, function (item) {
            res.writeHead(200, {
                'Content-Type': item[0].mimetype
            });
            res.write(item[0].image.buffer);
            res.end();
        });
    }