Express主体解析器req.body与formdata是空对象 [英] Express body-parser req.body with formdata is empty object
问题描述
某种程度上,我的要求始终是空的,也许您有一个主意:
Somehow my req.body is always empty, maybe you have an idea:
这是我的服务器代码:
const Express = require('express');
const bodyParser = require('body-parser');
const app = new Express();
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.post('/save', (req, res) => {
console.log(req.body) // => {}
res.send(req.body);
});
const env = process.env.NODE_ENV || 'production';
app.listen(3000, err => {
if (err) { return console.error(err); }
console.info(`Server running on http://localhost:${port} [${env}]`);
});
当我尝试使用javascript发送formdata时,req.body为空:
When I try to send formdata with javascript the req.body is empty:
const data = new FormData(document.querySelector('form'));
console.log(data); // seems empty already??? FormData{}??
const xhr = new XMLHttpRequest();
xhr.open('POST', 'http://localhost:3000/save');
xhr.send(data);
与邮递员相同:
我不明白这一点……
用邮递员或raw (application/json)
发送x-www-form-urlencoded
在邮递员中有效.但是在javascript中使用Formdata发送相同的标头仍然会导致对象为空……
Sending x-www-form-urlencoded
with postman or raw (application/json)
works in postman. But sending the same headers with Formdata in javascript will still result in an empty object…
推荐答案
记录formData中的每个字段
To log every field in formData
let myForm = document.getElementById('myForm');
formData = new FormData(myForm);
for (let [key, value] of formData.entries()) {
console.log(key, value);
}
小提琴- https://jsfiddle.net/thesumit67/j4znhxa5/1/
要通过快递处理它,请使用 multer . 这是一个例子- https://www.npmjs.com/package/multer
To handle it via express use multer. Here is an example - https://www.npmjs.com/package/multer
确保在表单元素上添加enctype="multipart/form-data"
.否则Multer会忽略它.
Make sure to add enctype="multipart/form-data"
on form element. Otherwise Multer will ignore it.
let multer = require('multer');
let upload = multer();
app.post('/save', upload.fields([]), (req, res) => {
console.log( req.body );
console.log( req.files );
res.sendStatus(200);
});
这篇关于Express主体解析器req.body与formdata是空对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!