收藏
回答

wx.uploadFile contentType漏传boundary导致后端报错?

小程序使用wx.chooseImage上传本地相册图片到后端,后端用的MultipartFile接收,报错:the request was rejected because no multipart boundary was found

org.springframework.web.multipart.MultipartException: Failed to parse multipart servlet request;
 nested exception is java.io.IOException: org.apache.tomcat.util.http.fileupload.FileUploadException: 
    the request was rejected because no multipart boundary was found
最后一次编辑于  2021-10-18
回答关注问题邀请回答
收藏

1 个回答

  • 草料二维码
    草料二维码
    2021-10-21

    同样的情况。我们的问题已经解决了。是因为 微信小程序uploadFile方法,HTTP请求中的Content-Type缺少了boundary。


    正确的应该是:multipart/form-data; boundary=xxxxx

    实际接收到的是:multipart/form-data;


    服务端无法根据boundary来区分form-data的fields,因此无法处理请求导致上传发生错误。


    我们解决方案:


    在网关层编写了一个中间件应用在上传服务器前,判断请求的Content-Type是中不存在boundary时。从Request Body中获取第一行(就是boundary),去掉前缀"--",放到header中。


    举例:

    Body内容如下:

    --1634813444

    Content-Disposition: form-data; name="Filedata"; filename="aaa.pdf"; filename*="UTF-8''aa.pdf"

    <aa.pdf>

    --1634813444

    Content-Disposition: form-data; name="resotype"

    1

    --1634813444--


    获取"--1634813444",并去掉前缀"--"。得到 Content-Type: multipart/form-data; boundary=1634813444,服务端就可以正常处理请求。


    2021-10-21
    有用
    回复
登录 后发表内容