【发布时间】:2018-04-01 23:59:22
【问题描述】:
我最近创建了一个接受文件的 API。我正在尝试使用 Postman 测试 API。如果我使用 x-wwww-form-urlencoded 正文类型发出帖子请求,一切正常,我得到所有预期的数据。唯一的问题是它不允许发送文件。如果我使用form-data 正文类型,允许您发送文件,我不会在后端收到任何内容。不确定邮递员是否有问题或者我做错了什么。我的预感是后端目前不接受form-data,这就是为什么我没有收到任何数据。我能做些什么来改变它?
到目前为止,我的标题看起来像这样,
res.setHeader('Access-Control-Allow-Origin', origin);
res.header("Access-Control-Allow-Methods", "GET, POST, PATCH, PUT, DELETE, OPTIONS");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, form-data");
app.js
app
// static route will go to the client (angular app)
.use(express.static('client'))
// secured routes
.use('/api', secured_route)
// add a user route
.post('/user', user_api_controller.add_user)
// delete this in the production
.use(function(req, res, next) {
res = allowed_orgins(req, res);
next();
})
;
allowed_orgins = function (req, res){
var allowedOrigins = ['http://localhost:4200', 'http://localhost:8100'];
var origin = req.headers.origin;
if(allowedOrigins.indexOf(origin) > -1){
res.setHeader('Access-Control-Allow-Origin', origin);
res.header("Access-Control-Allow-Methods", "GET, POST, PATCH, PUT, DELETE, OPTIONS");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, multipart/form-data");
}
return res;
}
user_api_controller.js
module.exports.add_user = function (req, res) {
console.log(req.body.username);
console.log(req.body.other_parameters);
}
如果我使用form-data,我不会在控制台上打印任何内容,但是当我使用x-wwww-form-urlencoded 时它可以正常工作。
我使用了multer middle ware,但我仍然没有得到任何东西。当我的后端收到一些东西时,中间件就会发挥作用。我已经尝试获取form-data 的纯文本字段,但我也没有得到。这意味着我的后端无法接收所有 form-data 字段,不仅是文件,还有文本字段。
【问题讨论】:
-
你需要通过 req.body form 的 form-data @HafizTemuri
-
@muthukumar 抱歉,我没听清楚。请您详细说明一下好吗?
-
你的问题不在于标题请通过multer Middle Ware
-
我使用了
multer middle ware,我仍然没有得到任何东西。当我的后端收到一些东西时,中间件就会发挥作用。我已经尝试获取form-data的纯文本字段,但我也没有得到。这意味着我的后端无法接收form-data字段,不仅是文件,还有文本字段。