这是我的路由器文件!
router.post('/add', upload.single('image'), (req, res) => {
console.log(req.file)
var img = fs.readFileSync(req.file.path);
var encode_image = img.toString('base64');
const image = new Image({
image: Buffer.from(encode_image, 'base64'),
contentType: req.file.mimetype
})
image.save()
.then(img => {
res.json(img.id)
})
.catch(err => res.json(err))
})
// 5e252bd7e4eaa9478c019f02
我的图像上传架构
// Create Image Schema
const ImageSchema = new Schema({
image: {
type: Buffer
},
contentType: {
type: String
},
uploaded: {
type: Date,my
default: Date.now
}
})
但是将图像上传到我的数据库后
但是当我尝试将其检索为:
router.get('/photo/:id', (req, res) => {
var filename = req.params.id;
Image.findOne({'_id': mongoose.Types.ObjectId(filename) }, (err, result) => {
if (err) return console.log(err)
console.log(result)
res.contentType(result.contentType);
res.send(result.image.buffer)
})
})
我遇到黑屏,没有图像, 我提到this用于上传文件。
最佳答案
好的,我这样做解决了错误:-= 改变
res.send(result.image.buffer)
至
res.send(new Buffer.from(result.image.buffer, 'base64'))
我不知道为什么这会起作用!如果有人知道请告诉我。谢谢
关于node.js - 使用 multer 在 mongoDb 中存储和获取图像时遇到问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59817230/