【问题标题】:having problem with storing and getting image in mongoDb with multer?使用 multer 在 mongoDb 中存储和获取图像时遇到问题?
【发布时间】:2020-01-20 14:02:23
【问题描述】:

这是我的路由器文件!

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 进行文件上传。

【问题讨论】:

    标签: node.js mongodb file-upload multer


    【解决方案1】:

    好的,我这样做解决了错误:-= 改变

     res.send(result.image.buffer)
    

     res.send(new Buffer.from(result.image.buffer, 'base64'))
    

    我不知道为什么会这样!如果有人知道请告诉我。谢谢

    【讨论】:

      【解决方案2】:

      将图像存储到数据库似乎有问题

       const image = new Image({
              image: new Buffer.from(encode_image, 'base64'), // pass new object of Buffer with your image 
              contentType: req.file.mimetype
          })
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-31
      • 1970-01-01
      • 2013-09-10
      • 2012-07-24
      • 2022-12-05
      • 2021-01-24
      • 2014-12-05
      • 2018-02-08
      相关资源
      最近更新 更多