возникли проблемы с хранением и получением изображения в mongoDb с помощью multer? - PullRequest
1 голос
/ 20 января 2020

Это мой файл роутера!

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)


      })
    })

Я получаю черный экран без изображения, я сослался этот для создания загрузка файла.

Ответы [ 2 ]

1 голос
/ 20 января 2020

Хорошо, я решил ошибку, выполнив следующее: - = изменение

 res.send(result.image.buffer)

На

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

Я не знаю, почему это сработало! Если кто-нибудь знает, пожалуйста, дайте мне знать. Спасибо

0 голосов
/ 20 января 2020

Это похоже на проблему с сохранением изображения в базе данных

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