3
votes

Erreur: ENOENT: aucun fichier ou répertoire de ce type,

Lorsque j'essaie de télécharger des images et de les enregistrer dans le dossier public / upload_files via Postman, cette erreur s'affiche

node -v v10.15.3

npm -v 6.9.0

"Erreur: ENOENT: aucun fichier ou répertoire de ce type"

Ceci est mon code

const express = require('express'); 

const router = express.Router();    
const multer = require('multer');

const storage = multer.diskStorage({    
  destination: function(req, file, cb) {
    cb(null,'./public/uploaded_files');    
  },    
  filename: function(req, file, cb) {       
    cb(null,new Date().toISOString() + file.originalname);    
  } 
});

const upload = multer({storage:storage});    

router.post('/', upload.single('file'), (req,res,next) => {    
  console.log(req.file);
});

module.exports = router;

J'essaye juste d'enregistrer les images dans le dossier suivant public / upload_files


6 commentaires

ne fonctionne pas j'ai essayé.


les dossiers que vous avez écrits, existent-ils?


oui ça existe. Cela me donne cette erreur Erreur: ENOENT: aucun fichier ou répertoire de ce type, ouvrez 'D: \ Event \ public \ upload_files \ 2019-04-20T20: 34: 21.195Z025.‌ JPG'


`D: \ Event \ public \ upload_files` ce chemin est-il correct?


oui c'est le chemin complet D: \ Event \ public \ upload_files


Essayez peut-être sans le point final . dans votre chemin comme ceci '\ public \ upload_files'


4 Réponses :


3
votes

J'ai apporté quelques modifications à mon code et cela a fonctionné après avoir passé 9 heures

J'ai ajouté cette ligne

var storage = multer.diskStorage({

destination: function(req, file, cb)

{

cb(null,path.join(__dirname,'../upload'))

},

filename: function(req, file, cb)

{

cb(null,Date.now() + path.extname(file.originalname))
    }
});

et ceci

cb(null,Date.now() + path.extname(file.originalname))


0 commentaires

1
votes

Utilisez

"error": "ENOENT: no such file or directory

au lieu de

cb(null, new Date().toISOString() + file.originalname); 

pour empêcher

cb(null, Date.now() + file.originalname);  


0 commentaires

0
votes

Cela peut être dû à un nom de fichier interdit ou à une action du système d'exploitation. Avez-vous exécuté le programme sous un système d'exploitation différent? Par exemple: Certains OS n'autorisent pas le nom de fichier avec certains caractères spéciaux comme produit par la nouvelle fonction Date (). ToISOString (). Extra: je pense que ce code provient du cours Node js de Max.


0 commentaires

-1
votes
  const storage = multer.diskStorage({
        destination: function(req, file, cb) {
            cb(null, './public/uploaded_files');
        },
        filename: function(req, file, cb) {
             // cb(null, new Date().toISOString() + file.originalname) // this is wrong
            cb(null, Date.now() + file.originalname);
        }
    });

1 commentaires

Bien que ce code puisse résoudre la question, y compris une explication expliquant comment et pourquoi cela résout le problème aiderait vraiment à améliorer la qualité de votre post, et entraînera probablement plus de votes positifs. N'oubliez pas que vous répondez à la question des lecteurs à l'avenir, pas seulement à la personne qui la pose maintenant. Veuillez modifier votre réponse pour ajouter des explications et donner une indication des limitations et hypothèses applicables.