如何在 Spring Boot 中使用 multipart/form-data 处理没有 Content-Disposition 标头的 POST
Posted
技术标签:
【中文标题】如何在 Spring Boot 中使用 multipart/form-data 处理没有 Content-Disposition 标头的 POST【英文标题】:How process POST with multipart/form-data without Content-Disposition header in Spring Boot 【发布时间】: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。
有人知道如何处理吗?
谢谢。
【问题讨论】:
您能否展示您的控制器以及您在发布多部分时收到的错误消息 将控制器添加到主帖。没有错误.. 【参考方案1】:我使用了您的控制器并发布了多个文件,似乎没有问题,并检查了所有标题,我的标题中没有 Content-Disposition
,但我可以看到所有文件的详细信息。似乎问题是发送请求而不是 Spring 启动端。
请看下面的截图:
这是我收到的标题,没有Content-Disposition
【讨论】:
Content-Disposition 不是 httpHeader,它是关于 multipartFile 部分的标头。如果您查看原始请求,您可以看到此标头。在您的情况下,此标头包含 fileName = "file1".以上是关于如何在 Spring Boot 中使用 multipart/form-data 处理没有 Content-Disposition 标头的 POST的主要内容,如果未能解决你的问题,请参考以下文章
带有 OAuth 的 Spring Boot Security Multi Http 不起作用
Spring Boot Multi-Module maven 项目重新打包失败
Spring Boot Multi Module Gradle Project 类路径问题:Package Not Found, Symbol not Found