问题描述
我很难显示从mongoDB检索到的图像,并将其保存为二进制数据。我正在使用Multer将图像存储到数据库。图像已正确存储到数据库中,但是当我尝试显示它们并将它们隐秘到base64时,出现了此错误:无法读取未定义的属性'toString'...
这是我的代码:
var storage = multer.diskStorage({
destination: './public/uploads/',filename: (req,file,cb) => {
cb(null,file.fieldname + '-' + Date.Now())
}
});
var upload = multer({storage: storage});
router.post('/',upload.single('image'),async (req,res,next) => {
console.log(res);
req.book = new Book();
next();
},postOrEditBook('new'));
function postOrEditBook(page) {
return async (req,res) => {
let book = req.book;
book.img = {
data: fs.readFileSync(path.join( './public/uploads/' + req.file.filename)),contentType: 'image/png'
}
try {
book = await book.save();
if(page == 'new') {
res.redirect('/list');
} else {
res.redirect(`/books/${book.slug}`);
}
} catch (e) {
res.render(`articles/${page}`,{ book: book })
}
}
}
在模式中,图像的存储方式如下:
const bookSchema = new mongoose.Schema({
img: {
data: Buffer,contentType: String
}
});
文件的输入字段:
<form action="/books" method="POST" autocomplete="off" enctype="multipart/form-data">
<input type="file" name="image"">
</form>
进入mongodb的图像如下所示: img:对象 :二进制('iVBORw0KGgoAAAANSUhEUgAABVYAAAMACAIAAABAXKuVAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMA ...',0) contentType:“图像/ png”
<div>
<% books.forEach(book => { %>
<img src="data:book/<%= book.img.contentType %>;base64,<%= book.img.data.toString('base64') %>">
<% }) %>
</div>
有人可以告诉我我在做什么错吗?我真的不知道是什么问题。我找不到任何能帮助我解决这个问题的东西...
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)