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/...