node.js - 使用 multer 在 mongoDb 中存储和获取图像时遇到问题?

标签 node.js mongodb file-upload multer

这是我的路由器文件!

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
    }
})

但是将图像上传到我的数据库后

Image of record in collection

但是当我尝试将其检索为:

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/

相关文章:

javascript - 使用拖放上传文件

android - Amazon S3 上传问题 Android SDK,com.amazonaws.AmazonClientException : More data read (4567265) than expected (4561427)

amazon-web-services - 使用 AWS EC2 实例提高上传速度

node.js - AWS弹性beantalk UnhandledPromiseRejectionWarning : Cannot find ffprobe

javascript - 使用 ibm_db 模块在 Node JS 中执行准备好的语句时出现问题

ruby-on-rails - Rails 3 的动态字段

python - 如何将多个csv文件导入MongoDB?

javascript - Sequelize : Check and add BelongsToMany (N to N) relation

node.js - React-Native 无法解析模块

java - Morphia 中的复杂 AND-OR 查询