我有一个图像(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更容易显示,请告诉我。
谢谢。
通过将二进制数据转换为URL,然后将其转换为<img>
标记的src,将二进制数据转换为图像
var template="<img src={{{`data:image/png;base64,${picture.content}`}}}/> <h1>{{title}}</h1>";