Ошибка при вызове API для Multer для хранения файлов - PullRequest
0 голосов
/ 25 мая 2020

Я создал API узла, используя multer для хранения файлов, и при вызове у меня возникает ошибка, пожалуйста, помогите. Сильфон - это код и ошибка -

Код -

const storage = multer.diskStorage({
    destination: './public/upload',
    filename: function(req, file, cb){
        cb(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname));
    }
});

// initialize upload
const upload = multer({
    storage: storage,
    limits: {fieldSize: 100000}
}).single('myImage');

app.post('/upload', (req, res)=> {  
    upload(req, res, (err) => {
        if(err){
            res.json({
                msg: req.body,
            });
        }else {
            res.json({
                msg: 'File uploaded',
                file: `upload/${req.file.filename}`
            });
        }
    })
})

Ошибка, которую я получаю при вызове API: «name»: «MulterError», «message»: «Неожиданное поле», «code»: «LIMIT_UNEXPECTED_FILE» , "storageErrors": []

Ответы [ 3 ]

0 голосов
/ 26 мая 2020

Передача имени файла работает для меня -

uploadFile = (e) =>{
  let file = e.target.files[0];
  let data = new FormData();
  data.append('myImage', file);
  axios.post('http://localhost:5000/upload', data, {
      headers: {
        'Content-Type': 'multipart/form-data'
      }
  }).then(res => this.setState({file: res.data.file}));
}
0 голосов
/ 22 августа 2020
limits: {fileSize: 100000}

Я не проверял, но считаю, что это должен быть fileSize, а не fieldSize, возможно

0 голосов
/ 25 мая 2020

Убедитесь, что в вашем коде Frontend входное имя myImage

Если вы используете HTML, попробуйте использовать этот код

   <input type=“file” name=“myImage” />

Предположим, вы используете интерфейсную структуру response

Этот фрагмент кода должен быть в функции submit / uploadFile

  const uploadFile = (e) =>{
       e.preventDefault();
      let file = e.target.files[0];
      let data = new FormData();
      data.append('myImage', file);
      axios.post('http://localhost:5000/upload', data, {
          headers: {
            'Content-Type': 'multipart/form-data'
          }
      }).then(res => this.setState({file: res.data.file}));
    }

Надеюсь, это поможет

...