发送多部分 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
   });

希望这对你有用。