上传一个文件并传递一个附加的参数与multer
我正在使用jQuery Form Plugin
和multer
上传文件到我的服务器。 这工作得很好,但我想传递一个额外的参数,这将决定在哪里确切的文件将被保存。
我有下面的代码,我想扩展到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"); } }); });
- 如何使用node.js强大的库来接收上传的文件并使用knox将其保存到Amazon S3?
- 在通过file.createWriteStream()传输到GCP时,获取ESOCKETTIMEOUT,ECONNRESET或套接字会挂载大文件。
- AJAX图像上传与backbone.js node.js和express
- 如何使用Express安全地上传Node中的文件?
- 如何通过webapp上传一个一兆字节的文件到Amazon S3?
- 使用Express上传文件(node.js)
- 使用NodeJS和节点强大的上传文件
- 如何使用express.bodyParser获取文件名
- Node.js不是file upload(以及所有基于事件循环的语言)的好select – 是真的吗?