gpt4 book ai didi

javascript - Express body-parser req.body with formdata 是空对象

转载 作者:搜寻专家 更新时间:2023-10-31 23:40:38 27 4
gpt4 key购买 nike

不知何故我的 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}]`);
});

当我尝试使用 javascript 发送表单数据时,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);

与 postman 相同:

postman

我不明白这个……

使用 postman 或 raw (application/json) 发送 x-www-form-urlencoded 在 postman 中有效。但是在 javascript 中使用 Formdata 发送相同的 header 仍然会导致一个空对象......

最佳答案

记录formData中的每个字段

let myForm = document.getElementById('myForm');
formData = new FormData(myForm);

for (let [key, value] of formData.entries()) {
console.log(key, value);
}

fiddle - https://jsfiddle.net/thesumit67/j4znhxa5/1/

通过快速使用处理它 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);
});

关于javascript - Express body-parser req.body with formdata 是空对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44861517/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com