【发布时间】:2021-06-19 10:40:15
【问题描述】:
我想提交一个包含文件类型输入和普通输入的表单数据,并在快递请求中接收它。我正在使用 multer npm 包来保存文件。
HTML
<form id="abc" method="POST" enctype="multipart/form-data">
<input type="file" name="inputfile" id="inputfile">
<input type="text" id="firstname">
<button class="formsubmit">Submit</button>
</form>
jQuery
$(document).on('click', '.formsubmit', function(req, res){
var form = $('#abc')[0];
var data = new FormData(form);
data.append("name", $('#firstname').val());
$.ajax({
method: 'post',
url: '/sendformdata',
data: data,
contentType: false,
dataType: 'json',
cache : false,
processData: false,
success: function(res) {
console.log("Success");
},
error: function(err) {
console.log("Error");
}
}
快递
app.post('/sendformdata',(req,res) => {
console.log("body: ", req.body); // output: {}
console.log("body: ", req.query); // output: {}
console.log("body: ", req.fields); // output: undefined
upload(req,res,function(err){
if(err){
console.log(err)
}else{
path = req.file.path
}
})
}
var upload = multer({
storage: Storage
}).single("inputfile");
虽然 req.file 可用,但我无法接收快速请求中的文本类型输入。
如果有人有更好的上传文件的包或解决方案,请注意。我只是不想在表单标签中使用操作来捕获字段。
【问题讨论】:
标签: html jquery ajax express multer