我想将数据从客户端传输到双方都使用的服务器计算机Node.js
。在客户端我正在使用库axios
and form-data
。在我正在使用的服务器上express
and multer
...
我正在使用的客户端代码如下:
const FormData = require('form-data');
const axios = require('axios');
let form = new FormData();
form.append("user", "someuser");
axios({
method: 'post',
url: 'http://localhost:9996/data',
data: form
})
.then(function (response) {
console.log(response.status);
})
.catch(function (response) {
console.log(response.status);
});
服务器代码如下:
const express = require('express')
const bodyParser = require('body-parser');
const multer = require('multer')
const app = express();
const upload = multer();
app.use(bodyParser.urlencoded({extended: true}));
app.post('/data', upload.none(), function (req, res, next) {
console.log(req.body);
res.sendStatus(200)
})
const port = 9996;
app.listen(port, () => {
console.log(`running on port ${port}`)
})
.on('error', function(err) {
console.log('stopped')
})
这段代码是有效的,我设法得到了form
JSON
我在客户端上创建的作为服务器上的请求消息。然而,我的输出req.body
服务器上的内容如下:
{ '----------------------------926328179431047129531240\r\nContent-Disposition: form-data; name':
'"user"\r\n\r\nsomeuser\r\n----------------------------926328179431047129531240--\r\n' }
此输出未按我的预期格式化为 JSON 对象。不是参数吗upload.none()
from multer
应该解析req.body
作为 JSON?有谁知道我在这里出了什么问题,以及是否需要更改任何其他参数才能使 req.body 上的输出格式化为 JSON 对象?
观察:我知道如果我手动创建这个 JSONconst form = {"user":"someuser"}
我将把输出作为对象req.body
在服务器上。但是,我正在使用form-data
因为在我的原始代码中我计划读取一个大文件createReadStream
在客户端上写它createWriteStream
在服务器和库上form-data
是我找到的解决方案axios
支持数据流。