2015-09-13 4 views
0

Comment puis-je créer un dossier (si le dossier n'existe pas encore) avant que l'image ne soit téléchargée? Je reçois toujours l'erreur ENOENT.Créer un dossier avant le téléchargement dans express js

Lorsque je tente ce code:

module.exports = function(router){ 

    router.post('/result', directory.tmp, uploader.single, function(req,res){ 
      //some data manipulation here 
    }); 
} 

//directory.js

module.exports.tmp = function(req, res, next){ 
     mkdirp('./tmp/' + moment().format('MM-DD-YY') + '/' + moment().format('HH'), function (err) { 
      if (err) console.error(err) 
      console.log("=================================="); 
      console.log("tmp folder created"); 
      console.log("=================================="); 
     }); 
     next(); 
    }; 

Bien que je directory.tmp d'abord il va créer un dossier si elle n'est pas existant, je pense que uploader.single est exécuté en premier qui est pourquoi j'ai eu cette erreur. Après avoir reçu l'erreur, c'est l'heure à laquelle mon application a créé le dossier. Donc en d'autres termes, le fichier téléchargé n'a pas été sauvegardé. Comment résoudre ce problème afin qu'il crée d'abord le dossier, puis télécharger le fichier. Btw, j'utilise mkdirp et multer.

Répondre

1

Je vous suggère de faire le next(); dans le rappel de mkdirp.

Parce que, comme vous l'avez fait, pourquoi il crée le dossier qu'il appelle ensuite et va plus loin et le dossier n'est pas encore créé. C'est pourquoi vous devez d'abord attendre la création du dossier.

module.exports.tmp = function(req, res, next){ 
    mkdirp('./tmp/' + moment().format('MM-DD-YY') + '/' + moment().format('HH'), function (err) { 
     if (err) console.error(err) 
     console.log("=================================="); 
     console.log("tmp folder created"); 
     console.log("=================================="); 
     next(); 
    }); 
}; 
+0

merci! cela a fonctionné comme prévu. – user3569641

+0

Cool, j'espère qu'avec l'explication vous avez compris pourquoi cela ne fonctionnait pas avant – DevAlien

+0

Ouais. Merci encore. – user3569641