node.js - 显示来自 GridFS 的 HTML 图像

标签 node.js angularjs gridfs

我正在 GridFS 中上传图像,但不知道如何在 <img > 中显示它标签。

我尝试了以下代码:

conn.once('open', function () {
    var gfs = Grid(conn.db, mongoose.mongo);
    gfs.files.find({ filename: 'img1.png' }).toArray(function (err, files) {
        if (err) { console.log(err); }
        console.log(files);
    });
});

我得到结果:

[ { _id: 5316f8b3840ccc8c2600003c,
    filename: 'img1.png',
    contentType: 'binary/octet-stream',
    length: 153017,
    chunkSize: 262144,
    uploadDate: Wed Mar 05 2014 15:43:07 GMT+0530 (India Standard Time),
    aliases: null,
    metadata: null,
    md5: '915c5e41a6d0a410128b3c047470e9e3' } ]

现在这只是文件信息而不是实际的文件数据。

如何在 HTML 中显示图像?

最佳答案

您必须定义响应的内容类型,并使用数据库连接来获取数据。检查以下示例以获得一个想法:

app.get('/filelist', function(req, res) {
    var collection = db.collection('DbCollectionName');
    var da = collection.find().toArray(function(err, items) {
        console.log(items[0]);
        res.writeHead(200, {'Content-Type': 'image/png'});
        res.end(items[1].dbfileName.buffer, 'binary');
    });
});

编辑:

因此,当您要将图像设置为源时,可以将图像的二进制数据(从数据库获取)转换为base64格式。

var img = document.createElement('img');
img.src = 'data:image/jpeg;base64,' + btoa('your-binary-data'); //JS have btoa() function for it.
document.body.appendChild(img);

或者如果您的图像不支持上述内容,您也可以使用十六进制转base64

function hexToBase64(str) {
return btoa(String.fromCharCode.apply(null, str.replace(/\r|\n/g, "").replace(/([\da-fA-F]{2}) ?/g, "0x$1 ").replace(/ +$/, "").split(" ")));
}

并将其命名为

img.src = 'data:image/jpeg;base64,' + hexToBase64('your-binary-data');

关于node.js - 显示来自 GridFS 的 HTML 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22196125/

相关文章:

javascript - 如何下载整个 NPM 存储库以获得完全离线开发的乐趣?

javascript - 使用 Firebase 和查询选择字段子集的 NoSQL 数据结构

angularjs - 平均堆栈 : How to bind uploads to a mongoose model?

node.js - 使用相同的 POST 请求将文件上传到 MongoDB 和本地服务器

javascript - 通过 API 中的 req.query 将元数据信息附加到 Gridfs 文档文件 - Node.js Expresss.js MongoDB Multer Gridfs 流

javascript - 是否可以在服务器端使用前端 JS 框架和 Node.JS 来创建用于内容交付的 Web 服务?

url - 如何使用 MongoDB/Node.js 创建友好的 URL?

linux - npm 包未在 Linux 上执行

javascript - ui-router 中的嵌套路由无法解析

javascript - 在AngularJS中使用工厂中的工厂