如何使用Node JS中的Mustache在MongoDB中显示存储为二进制数据的图像

问题描述 投票:0回答:1

我有一个图像(png)文件存储在我的MongoDB中作为二进制数据。我的MongoDB架构如下所示:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
ImageSchema = new Schema (
{ title : String,
  picture: { content: Buffer, contentType: String }
}
);

小胡子代码如下所示:

var template = "{{picture.content}} <h1>{{title}}</h1>";
var rendered = Mustache.render(template, imageObject);
$('#target').html(rendered);

MongoDB中的数据如下所示,因为它太长而缩短了:

 "picture" : {
                "contentType" : "image/png",
                "content" : BinData(0,"iVBORw0KGgoAAAANSUhEUg ...")
             }

下面是我如何使用multer将其存储到MongoDB中:

dbmodel.findOne(req.params.title, function(err, ) {
 records.picture.content = fs.readFileSync(req.files.path);
        records.picture.contentType = 'image/png';
        records.save(function (err) {
          if(!err) {
            res.send("Image is saved into MongoDB");

          } else {
            res.send(400).send();
          }
 })

将这个二进制数据转换为图像的方法是什么,特别是将它放入Mustache模板中进行显示?如果图像需要以其他方式保存以及如何使用Mustache更容易显示,请告诉我。

谢谢。

node.js mongodb mustache
1个回答
0
投票

通过将二进制数据转换为URL,然后将其转换为<img>标记的src,将二进制数据转换为图像

var template="<img src={{{`data:image/png;base64,${picture.content}`}}}/> <h1>{{title}}</h1>";
© www.soinside.com 2019 - 2024. All rights reserved.