我已将multer配置为;
var storage = multer.diskStorage({
destination: function(req, file, cb) {
cb(null, '../images/profile');
},
filename: function(req, file, cb) {
cb(null, req.body.username + '.jpeg'); // file does not get renamed
}
});
var upload = multer({storage: storage});
// Route that uses multer
router.post('/auth/signup/upload', upload.single('image'), function(req, res) {
console.log(req.body.username); // contains value
res.send();
});
虽然req.body.username有一个值,但是文件没有重命名。 我在这里失踪了什么?
答案 0 :(得分:1)
来自multer
手册:
请注意,
req.body
可能尚未完全填充。这取决于客户端将字段和文件传输到服务器的顺序。
可悲的是,我不相信有一个很好的方法可以解决这个问题。您可以尝试切换HTML表单中字段的顺序,但这可能不会导致跨浏览器的一致行为。您也可以在查询字符串上发送用户名(即POST
文件到http://foo.bar?username=me
)。您也可以在之后手动移动文件,或者将用户名和文件之间的映射存储在其他位置。