как загрузить изображение в буфер mongodb с реакцией на стороне клиента - PullRequest
1 голос
/ 03 октября 2019

Я использую Multer

  const upload = multer({
    limits: {
        fileSize: 1000000
    },
    fileFilter(req, file, cb) {
        if (!file.originalname.match(/\.(jpg|jpeg|png)$/)) {
            return cb(new Error('Please upload an image'))


        cb(undefined, true)
    }
})

на стороне сервера, используя экспресс и мультитер. Я хочу сохранить изображение в mongodb в виде буфера


router.post('/users/me/avatar', auth, upload.single('avatar'), async (req, res) => {
    console.log(req.file)
    const buffer = await sharp(req.file.buffer).resize({ width: 250, height: 250 }).png().toBuffer()
    req.user.avatar = buffer
    await req.user.save()
    res.send()
}, (error, req, res, next) => {
    res.status(400).send({ error: error.message })
})

1 Ответ

0 голосов
/ 03 октября 2019

Вы хотите, чтобы ваше изображение в базе 64? вам нужно будет использовать Jimp

npm install --save jimp

const Jimp = require('jimp');

Jimp.read(req.file.path)
  .then(image => {
    return image.getBase64(Jimp.AUTO, (err, res) => {
      if (err) return console.log(err);

      // you launch your mongodb save with res
      return res; 
    });
  })
  .catch(err => console.log(err));

https://github.com/oliver-moran/jimp/issues/522#issuecomment-411246785

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...