网站服务器的选择有哪几种方式,网站建设策划解决方案,网站收费板块怎么做,长沙网站关键词优化背景
项目需要#xff0c;要求升级 spring boot 2.7 到 spring boot 3.2#xff0c;升级过程中发现很多不兼容问题#xff0c;下面说明文件上传失败的解决方案。
问题
spring boot 2 中不需要额外的配置#xff0c;直接在 Controller 中配置 MultipartFile 接收页面传的…背景
项目需要要求升级 spring boot 2.7 到 spring boot 3.2升级过程中发现很多不兼容问题下面说明文件上传失败的解决方案。
问题
spring boot 2 中不需要额外的配置直接在 Controller 中配置 MultipartFile 接收页面传的文件即可但是在 spring boot 3 中接收的文件参数为空。
问题一
排查的第一个问题就是文件流被其他 Filter 读取了导致获取不到文件信息但是 spring boot 2 也有这个 Filter没有出现问题。 具体原因没有详细追究解决方案就是在 Filter 中去掉对文件上传这个请求的处理。
问题二
CommonsMultipartResolver 不能用了。 如果有自定义操作可以继承 StandardServletMultipartResolver然后通过 Component 注入到 spring bean 即可。
如果没有注入该对象则在 org.springframework.web.servlet.DispatcherServlet.checkMultipart 中 multipartResolver 为 null。
问题三
还是获取不到文件对象。 追踪到 org.apache.catalina.connector.Request.parseParts 中可以看到 MultipartConfigElement mce 为 null 继续查看这部分代码发现 StandardWrapper 中 multipartConfigElement 是通过注解或者配置文件设置进去的。因此需要注入MultipartConfigElement 对象进入如下
总结
以上就是升级 spring boot3 文件上传失败遇到的问题及解决方案。