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 Réponses :
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})); }
En utilisant réagir en extrémité avant et en utilisant le même nom
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})); }
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})); }
limits: {fileSize: 100000} I didn't check it but I believe it has to be fileSize not fieldSize, probably
Essayez d'ne pas utiliser
Limites: {champLiers: 100000} code> attribut.
Toujours pas de chance, obtention d'erreur - {"msg": {"Nom": "MulterError", "Message": "Champ inattendu", "Code": "limit_unexpected_file", "StorageErrors": []}}
Stackoverflow.com/questions/31530200/...