我正在使用multer上传有效的文件。上传之后,我需要在数据库中写入信息。
问题是我的req.body
只是一个空对象,但是我正在发送正确的数据(通过表单数据)。我的req.file
对象已填充并且效果很好。
奇怪的是,当我定义multer存储变量时,req.body
可以正常工作并拥有我的所有数据。
这是我的Angular前端:
const formData = new FormData();
formData.append('participant', report.participantId.toString());
formData.append('coach', report.coachId.toString());
formData.append('type', report.reportType.toString());
formData.append('file', report.file, report.file.name);
这是我的node.js API。在这段代码中,我的req.body
可以工作:
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, __dirname + '/../../temp/reports');
},
filename: function (req, file, cb) {
var datetimestamp = Date.now();
var filename = req.body.participant + "_" + req.body.type + "_" + datetimestamp + "_" + file.originalname;
cb(null, filename);
}
});
在它下面,我有我的帖子功能。 req.body
在这里是一个空对象。
var upload = multer({ storage: storage }).single("file");
function init(router) {
router.post("/report", upload, function (req, res, next) {
if (req.file) {
upload(req, res, function (err) {
if (err) {
return res.status(422).send("an Error occured");
}
path = req.file.path;
reportService.addReport(req.body, path).then((data) => {
res.send(data);
}).catch((err) => {
res.send(err);
});
//return res.status(200).send(path);
});
}
});
}
我在做什么错,或者我怎么解决这个问题?