chi*_*zui 11 javascript form-data node.js express body-parser
不知何故我的 req.body 总是空的,也许你有一个想法:
这是我的服务器代码:
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}]`);
});
Run Code Online (Sandbox Code Playgroud)
当我尝试使用 javascript 发送 formdata 时,req.body 为空:
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);
Run Code Online (Sandbox Code Playgroud)
与邮递员相同:
我不明白这个…
x-www-form-urlencoded与邮递员一起发送或raw (application/json)在邮递员工作。但是在 javascript 中使用 Formdata 发送相同的标头仍然会导致一个空对象......
Sum*_*t M 12
记录 formData 中的每个字段
let myForm = document.getElementById('myForm');
formData = new FormData(myForm);
for (let [key, value] of formData.entries()) {
console.log(key, value);
}
Run Code Online (Sandbox Code Playgroud)
小提琴 - https://jsfiddle.net/thesmit67/j4znhxa5/1/
要通过 express 处理它,请使用multer。这是一个例子 - https://www.npmjs.com/package/multer
确保添加enctype="multipart/form-data"表单元素。否则 Multer 将忽略它。
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);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18899 次 |
| 最近记录: |