首页 > 解决方案 > multer 未定义 Req.files

问题描述

在我设法将图像保存在上传文件夹中之后。现在我无法将其保存在捐赠数据库中mongodb

folder router

const multer = require('multer')

var Storage = multer.diskStorage({
    destination: function(req, file, callback) {
        callback(null, "./public/uploads");
    },
    filename: function(req, file, callback) {
        callback(null,  file.originalname);
    }
});

const upload = multer({
  storage: Storage
  }).fields([{name: "image1Upload", maxCount: 1}, {name: "image2Upload", maxCount: 1}]);
 
 router.post('/ajouter-annonce', upload, AnnonceController.annoncePost

folder Controller

const annoncePost = (req, res, next) =>{

 const url = req.protocol + '://' + req.get('host');
 const {titreBien, description, email, address, Categories, EtatBien } = req.body
 
 const saveAnnonce = new Annonce({
   titreBien,
   description,
   email,
   address,
   Categories,
   EtatBien,
   image2Upload: url + '/public/uploads/' +  req.files['image2Upload'][1]
 })

//   url + '/public/uploads/' + req.file.filename

 console.log(saveAnnonce);
 next()

 
   console.log(
{
  _id: 60185a53e2cdee45201b9334,
  titreBien: 'deballage',
  description: 'test',
  email: 'ahmadanote26@gmail.com',
  address: '24 Rue du maréchal juin',
  Categories: 'Habillement',
  EtatBien: 'Etat Neuf',
  image2Upload: 'http://localhost:3000/public/uploads/undefined',
  date: 2021-02-01T19:45:23.356Z
}

)

标签: node.jsmongodb

解决方案


您已为这两个文件设置了限制maxCount: 1

fields([{name: "image1Upload", maxCount: 1}, {name: "image2Upload", maxCount: 1}]);

在这里,您访问了image2Upload[1]不存在的文件。应该写成下面这样

 const saveAnnonce = new Annonce({
   titreBien,
   description,
   email,
   address,
   Categories,
   EtatBien,
   image2Upload: url + '/public/uploads/' +  req.files['image2Upload'][0].filename //file is present at position 0 as maxCount is only 1
 })

推荐阅读