【发布时间】:2016-10-30 04:24:32
【问题描述】:
我的快速表单处理 req.files 为我尝试过的所有策略提供了空数组或对象。
并且我的文件字段不被 multer 中的 makemiddleware 对象视为文件。 (尝试解决这个问题并且表单提交不会在那里)。
我的客户端请求有效负载如下所示,服务端 req.headers['content-type'] 显示为 multipart/form-data
------WebKitFormBoundaryjcaOV7ABMw82oDRB
Content-Disposition: form-data; name="username"
Yash
------WebKitFormBoundaryjcaOV7ABMw82oDRB
Content-Disposition: form-data; name="email"
gnanajothi@gmail.com
------WebKitFormBoundaryjcaOV7ABMw82oDRB
Content-Disposition: form-data; name="password"
yash
------WebKitFormBoundaryjcaOV7ABMw82oDRB
Content-Disposition: form-data; name="confirmPassword"
yash
------WebKitFormBoundaryjcaOV7ABMw82oDRB
Content-Disposition: form-data; name="profilePicture"
[object FileList]
------WebKitFormBoundaryjcaOV7ABMw82oDRB--
//Middleware
var uploadPath = path.join(__dirname, '../public/upload');
var upload = multer({
dest: uploadPath,
rename: function (fieldname, filename) {
return filename.replace(/\W+/g, '-').toLowerCase() + Date.now();
},
onFileUploadStart: function (file) {
console.log(file.fieldname + ' is starting ...');
},
onFileUploadData: function (file, data) {
console.log(data.length + ' of ' + file.fieldname + ' arrived');
},
onFileUploadComplete: function (file) {
console.log(file.fieldname + ' uploaded to ' + file.path);
}
});
//Route
router.route('/user/signmeup')
.post(function(req, res){
upload.array('profilePicture', 2)(req, res, (err) => {
console.dir(req.headers['content-type']);
if (err) {
console.log('err', err);
}else{
console.log('coming here'); console.log(req.files); console.log(req.body);
var reg = new Registration();
let args = { body : req.body, session : req.session };
reg.applyForMembership(args, function(err, result){
res.json(result);
});
}
});
});
在通过中间件进行 req 处理后,req.body 和 req.files 总是像下面这样打印
coming here
[]
{ username: 'Yash',
email: 'gnanajothi@gmail.com',
password: 'yash',
confirmPassword: 'yash',
profilePicture: '[object FileList]' }
前端表单处理和/或我的应用中配置 multer 的方式是否存在问题。
感谢您对此的任何帮助,过去几天一直在为此苦苦挣扎,但似乎没有任何效果。
谢谢, Gj
【问题讨论】:
-
您找到解决方案了吗?如果可以,您可以添加答案吗?
标签: file express upload multer