上传一个文件并传递一个附加的参数与multer

我正在使用jQuery Form Pluginmulter上传文件到我的服务器。 这工作得很好,但我想传递一个额外的参数,这将决定在哪里确切的文件将被保存。

我有下面的代码,我想扩展到performance如下:

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> 

客户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路由

 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"); }); }); 

注:我知道我没有检查mimetypes或消毒用户文件,但它现在主要是次要的。

问题是, multer保存文件的multer ,然后才写入req表单的其余部分 – 如隐藏的字段。

尝试这个:

 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"); } }); });