【问题标题】:Upgrading to Tomcat 8 breaks MultipartFile upload升级到 Tomcat 8 会中断 MultipartFile 上传
【发布时间】:2015-05-06 02:07:25
【问题描述】:

我正在使用 Spring Boot。我在控制器中调用的方法如下所示:

@RequestMapping(value = "/{customerId}/files/{id}/addFile", method = RequestMethod.POST,
        produces = "application/json; charset=UTF-8")
@ResponseBody
public Response uploadFile(@PathVariable String customerId, @PathVariable String id,
        @RequestParam("uploadedFile") MultipartFile file) throws IOException {

升级到 Tomcat 8 后,调用此方法时出现以下错误。我在从未到达的第一行设置了一个断点。:

org.springframework.web.util.NestedServletException: 请求 处理失败;嵌套异常是 org.springframework.web.multipart.MultipartException:无法解析 多部分 servlet 请求;嵌套异常是 java.io.IOException: org.apache.tomcat.util.http.fileupload.FileUploadException:流 关闭

有人遇到过这个问题吗?

【问题讨论】:

  • 你可以发布你的 pom.xml 或者你的构建工具的任何配置。
  • 我无法发布我的 pom.xml 但我可以确认当我的父 pom 升级以下内容时这种情况开始发生:spring-boot 1.1.5.RELEASE 到 1.1.8.RELEASE & tomcat 7.0 .54 到 8.0.12
  • 您是否尝试过更新版本的 Tomcat 8? 8.0.20 是撰写本文时的最新版本。此外,还有一个 getting started guide 用于使用 Spring Boot 上传文件。它适用于 Tomcat 8。也许您可以查看指南并找出您的应用程序有什么不同。
  • 我尝试过 Tomcat 8.0.20,但遇到了同样的问题。指南中的控制器看起来和我上面做的一样。 :/ 感谢您的帮助。

标签: spring-boot tomcat8


【解决方案1】:

尝试将 multipart.maxFileSize 和 multipart.maxRequestSize 添加到您的 application.properties 文件中。 SpringBoot 似乎有一个默认值 128KB,这破坏了我的上传。

【讨论】:

  • 值得一提的是,当您遇到同样的问题时,进行建议的更改是否对您有用。
  • 对不起,我在想,添加 multipart.maxFileSize 和 multipart.maxRequestSize 解决了我的问题,但实际上并没有。唯一的解决方案是将 spring-boot-autoconfigure 降级到版本 1.2.1 你可以找到同样的问题here
  • 现在我找到了解决问题的方法,除了降级 spring-boot-autoconfigure。我创建了一个 MultipartConfigElement Bean,在其中设置了 Multipart 位置。
猜你喜欢
  • 2014-04-26
  • 1970-01-01
  • 2018-12-20
  • 2016-06-22
  • 2015-11-04
  • 1970-01-01
  • 2014-10-19
  • 2020-02-25
  • 1970-01-01
相关资源
最近更新 更多