Téléchargement d'un fichier et passage d'un paramètre supplémentaire avec multer

J'utilise le jQuery Form Plugin et multer pour télécharger des fichiers sur mon serveur. Cela fonctionne très bien, mais j'essaie de passer un paramètre supplémentaire, qui déterminera où exactement le fichier sera sauvegardé.

J'ai le code suivant, que j'aimerais étendre pour se comporter comme indiqué:

HTML

 <form id="uploadForm" enctype="multipart/form-data" action="/files" method="post"> <input type="file" id="userFile" name="userFile"/> <input type="text" hidden id="savePath" name="savePath" value="path"/> </form> 

Client JS

 uploadForm.submit(function() { $(this).ajaxSubmit({ error: function(xhr) { console.log('Error: ' + xhr.status); }, success: function(response) { console.log('Success: ' + response); } }); return false; }); 

Node.js Route

 app.post(APIpath + "file",function(req,res){ var storage = multer.diskStorage({ destination: absoluteServePath+ "/" + config.filePath, filename: function (req, file, cb) { cb(null, file.originalname); } }); var upload = multer({ storage : storage}).any(); upload(req,res,function(err) { if(err) { console.log(err); return res.end("Error uploading file."); } res.end("File has been uploaded"); }); }); 

Remarque: Je sais que je ne vérifie pas les mimetypes ou la désinfection des fichiers utilisateur, mais c'est principalement secondaire pour moi en ce moment.

Le problème est que multer qui enregistre les fichiers en premier, et seulement écrit sur req la partie restante du formulaire – tels que les champs cachés.

Essaye ça:

 app.post(APIpath + "file",function(req,res){ var storage = multer.diskStorage({ destination: tmpUploadsPath }); var upload = multer({ storage : storage}).any(); upload(req,res,function(err) { if(err) { console.log(err); return res.end("Error uploading file."); } else { console.log(req.body); req.files.forEach( function(f) { console.log(f); // and move file to final destination... }); res.end("File has been uploaded"); } }); });