【问题标题】:How process POST with multipart/form-data without Content-Disposition header in Spring Boot如何在 Spring Boot 中使用 multipart/form-data 处理没有 Content-Disposition 标头的 POST
【发布时间】:2019-02-25 13:45:24
【问题描述】:

我正在使用 Sprin Boot,我需要处理这种类型的请求:

POST /post HTTP/1.0
content-type: multipart/form-data;boundary=482CFA229C8C00EBE48F4FAE633EDB4A0
content-length: 157
x-numbercomps: 1 
user-agent: SAP NetWeaver Application Server (1.0;750)
host: 172.0.0.1:8080
accept-encoding: gzip

--482CFA229C8C00EBE48F4FAE633EDB4A0
Content-Type: text/plain
Content-Length: 11
X-compId: test.txt

content
--482CFA229C8C00EBE48F4FAE633EDB4A0--

控制器:

@PostMapping(value = "/**", params = {"create"}, consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public String createPost(HttpServletRequest request,
                         @RequestParam MultipartFile... files) {
    //do some staff

    return "";
}

在控制器中没有错误,但MuiltipartFiles的数量为0

没有 Content-Disposition Spring 无法识别 MultipartFile。

有人知道如何处理吗?

谢谢。

【问题讨论】:

  • 您能否展示您的控制器以及您在发布多部分时收到的错误消息
  • 将控制器添加到主帖。没有错误..

标签: spring-mvc spring-boot post multipartform-data


【解决方案1】:

我使用了您的控制器并发布了多个文件,似乎没有问题,并检查了所有标题,我的标题中没有 Content-Disposition,但我可以看到所有文件的详细信息。似乎问题是发送请求而不是 Spring 启动端。

请看下面的截图:

这是我收到的标题,没有Content-Disposition

【讨论】:

  • Content-Disposition 不是 httpHeader,它是关于 multipartFile 部分的标头。如果您查看原始请求,您可以看到此标头。在您的情况下,此标头包含 fileName = "file1".
猜你喜欢
  • 2015-10-18
  • 1970-01-01
  • 1970-01-01
  • 2021-04-17
  • 2018-06-25
  • 1970-01-01
  • 1970-01-01
  • 2012-10-21
  • 1970-01-01
相关资源
最近更新 更多