在没有 bodyparser 的情况下访问 post 个 body
Access post body without bodyparser
我正在尝试将 bas64 编码图像发送到我的快速服务器并在那里解析它以将其保存到磁盘。我想用一个简单的 http post 请求来实现它,但无法让它工作。我的第一个实现使用了一个 websocket 服务器并且运行良好:
客户:
const object = JSON.stringify({
action: "add_image",
data: dataUrl,
})
ws.send(object)
服务器:
ws.on("message", (message) => {
const req = JSON.parse(message);
fs.writeFile(
"path/to/file.png",
data.split(";base64,").pop(),
{ encoding: "base64" },
(err) => err && console.log(err)
)
}
这是我尝试通过 http 请求获得相同的结果。
客户:
const object = JSON.stringify({
action: "add_image",
data: dataUrl,
})
fetch("http://localhost:3001/add_image", {
method: "POST",
headers: new Headers({
Origin: window.origin,
Accept: "image/png",
"Content-Type": "image/png",
}),
mode: "cors",
body: object,
})
服务器:
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.post("/add_image", function (req, res) {
console.log(req.body);
});
不幸的是,req.body 总是记录一个空对象。
我不太确定我缺少什么。任何帮助将不胜感激。
我在 this 文章中找到了答案。我需要合并请求的所有单独块,然后在过程完成后使用数据。
app.post("/add_image", function (req, res) {
let body = '';
req.on('data', chunk => {
body += chunk.toString();
});
req.on('end', () => {
console.log(JSON.parse(body));
res.end('ok');
});
});
我正在尝试将 bas64 编码图像发送到我的快速服务器并在那里解析它以将其保存到磁盘。我想用一个简单的 http post 请求来实现它,但无法让它工作。我的第一个实现使用了一个 websocket 服务器并且运行良好:
客户:
const object = JSON.stringify({
action: "add_image",
data: dataUrl,
})
ws.send(object)
服务器:
ws.on("message", (message) => {
const req = JSON.parse(message);
fs.writeFile(
"path/to/file.png",
data.split(";base64,").pop(),
{ encoding: "base64" },
(err) => err && console.log(err)
)
}
这是我尝试通过 http 请求获得相同的结果。
客户:
const object = JSON.stringify({
action: "add_image",
data: dataUrl,
})
fetch("http://localhost:3001/add_image", {
method: "POST",
headers: new Headers({
Origin: window.origin,
Accept: "image/png",
"Content-Type": "image/png",
}),
mode: "cors",
body: object,
})
服务器:
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.post("/add_image", function (req, res) {
console.log(req.body);
});
不幸的是,req.body 总是记录一个空对象。
我不太确定我缺少什么。任何帮助将不胜感激。
我在 this 文章中找到了答案。我需要合并请求的所有单独块,然后在过程完成后使用数据。
app.post("/add_image", function (req, res) {
let body = '';
req.on('data', chunk => {
body += chunk.toString();
});
req.on('end', () => {
console.log(JSON.parse(body));
res.end('ok');
});
});