发送多部分 post 请求时出现问题
issue when sending a multipart post request
我正在使用 js 处理 post 与 multipart/form-data 的请求。当从带有 multipart/form-data 的客户端发送 post 请求时,它总是 returns 错误请求错误。当我通过 postman 发送请求时,它给我错误:"invalid multipart payload format when sending a multipart post request"。无论我使用哪种调用方式,服务器端都没有任何动作。
{
method: "POST",
path: "/uploadFile",
config: {
payload: {
output: "stream",
parse: true,
allow: "multipart/form-data"
},
handler: (request, reply) => {
console.log("get into handler");
let data = request.payload;
if (data.file) {
let name = data.file.hapi.filename;
console.log(name);
} else {
console.log("no data");
}
}
}
}
客户端代码是这样的:
$http({
method: 'POST',
url: serviceURL
headers: {
'Content-Type': 'multipart/form-data; boundary=--xxxxSEPARATIONxxxx--'
},
data: formData
});
看起来您正在为客户端使用 angular 框架。
根据我的经验,把headers中的'Content-Type'改成undefined,浏览器会为它设置正确的格式。同时添加 transformRequest: angular.identity
参考 this link.
您的代码应如下所示:
$http({
method: 'POST',
url: serviceURL
headers: {
'Content-Type': undefined
},
transformRequest: angular.identity,
data: formData
});
希望这对你有用。
我正在使用 js 处理 post 与 multipart/form-data 的请求。当从带有 multipart/form-data 的客户端发送 post 请求时,它总是 returns 错误请求错误。当我通过 postman 发送请求时,它给我错误:"invalid multipart payload format when sending a multipart post request"。无论我使用哪种调用方式,服务器端都没有任何动作。
{
method: "POST",
path: "/uploadFile",
config: {
payload: {
output: "stream",
parse: true,
allow: "multipart/form-data"
},
handler: (request, reply) => {
console.log("get into handler");
let data = request.payload;
if (data.file) {
let name = data.file.hapi.filename;
console.log(name);
} else {
console.log("no data");
}
}
}
}
客户端代码是这样的:
$http({
method: 'POST',
url: serviceURL
headers: {
'Content-Type': 'multipart/form-data; boundary=--xxxxSEPARATIONxxxx--'
},
data: formData
});
看起来您正在为客户端使用 angular 框架。 根据我的经验,把headers中的'Content-Type'改成undefined,浏览器会为它设置正确的格式。同时添加 transformRequest: angular.identity 参考 this link.
您的代码应如下所示:
$http({
method: 'POST',
url: serviceURL
headers: {
'Content-Type': undefined
},
transformRequest: angular.identity,
data: formData
});
希望这对你有用。