Télécharger un fichier et passer un paramètre supplémentaire avec multer

J’utilise 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 je voudrais prolonger pour se comporter comme indiqué:

HTML

 

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 types MIME ou que je ne désinfecte pas les fichiers de l’utilisateur, mais c’est principalement secondaire pour moi en ce moment.

Le problème est que multer sauvegarde d’abord les fichiers, puis écrit pour req la partie restante du formulaire, telle 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"); } }); });