0
votes

Obtenir une erreur lors de l'appel d'API pour Multer pour stocker des fichiers

J'ai créé une API de nœud à l'aide de Multer pour stocker des fichiers et je reçois une erreur lors de l'appelant, veuillez vous aider. Ci-dessous est le code et l'erreur -

code - p>

p>

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}`
            });
        }
    })
})


3 commentaires

Essayez d'ne pas utiliser Limites: {champLiers: 100000} attribut.


Toujours pas de chance, obtention d'erreur - {"msg": {"Nom": "MulterError", "Message": "Champ inattendu", "Code": "limit_unexpected_file", "StorageErrors": []}}


Stackoverflow.com/questions/31530200/...


3 Réponses :


0
votes

sur votre code avant vous êtes assuré que le nom d'entrée est MyImage

si vous utilisez HTML Essayez d'utiliser ce code P>

  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}));
    }


6 commentaires

En utilisant réagir en extrémité avant et en utilisant le même nom {this.uploadfile (E)}} Nom = "myImage" />


Oui, cela fonctionne en passant par la clé dans l'appel de l'API. C'était mon mauvais, peut-être que je me suis trompé.


Vérifier ma réponse modifiée devrait aider à utiliser réagir


Essayez le code de réacteur et partagez-les d'autres problèmes que vous pourriez avoir


1er commentaire (a été supprimé) pour le débogage du but que vous devriez essayer de faire une demande sur Postman


Code de travail - UPLOADFILE = (E) => {Fichier Let = E.Target.files [0]; laisser les données = nouveau formdata (); données.append (nom de fichier ', fichier); Axios.post (' localhost: 5000 / upload ', données, {en-têtes: {'Type de contenu': 'multipart / form-données'}}). ensuite (res => this.setstate ({fichier: res.data.file})); }



1
votes

Passer le nom de fichier fonctionne pour moi -

p>

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 commentaires

0
votes
limits: {fileSize: 100000}
I didn't check it but I believe it has to be fileSize not fieldSize, probably

0 commentaires