Unable to process parts as no multi-part configuration has been provided

由于服务器迁移,jdk由原来的1.8升级到17,随着而来的springboot由原来的1.4.7.RELEASE升级到2.7.18,使用了spring security 。大部分功能没有什么问题,但上传文件报错,错误信息如下:java.lang.IllegalStateException: Unable to process parts as no multi-part configuration has been provided at org.apache.catalina.connector.Request.parseParts(Request.java:2766) ~[tomcat-embed-core-9.0.83.jar:9.0.83] at org.apache.catalina.connector.Request.getParts(Request.java:2735) ~[tomcat-embed-core-9.0.83.jar:9.0.83] at org.apache.catalina.connector.RequestFacade.getParts(RequestFacade.java:795) ~[tomcat-embed-core-9.0.83.jar:9.0.83] at javax.servlet.http.HttpServletRequestWrapper.getParts(HttpServletRequestWrapper.java:326) ~[tomcat-embed-core-9.0.83.jar:4.0.FR] at javax.servlet.http.HttpServletRequestWrapper.getParts(HttpServletRequestWrapper.java:326) ~

deepseek,百度了半天没有结果,然后就一点一点的删除文件,最后删除到一个

public class WebConfig implements WebMvcConfigurer  的文件后,问题解决了,里面 有这样一段内容

@Bean
public ServletRegistrationBean<DispatcherServlet> dispatcherServletRegistration() {
    ServletRegistrationBean<DispatcherServlet> registration = new ServletRegistrationBean<>(new DispatcherServlet());
    registration.setName("dispatcherServlet");
    registration.setLoadOnStartup(1);
    registration.addUrlMappings("/"); // 确保 URL 映射正确
    return registration;
}

将这段内容注释掉就可以了,deepseek的解释是

当您在Spring Boot中 ‌手动注册DispatcherServlet‌(通过ServletRegistrationBean),会导致 ‌Spring Boot的默认自动配置失效‌,特别是与MultipartConfig相关的配置。此时必须 ‌显式关联MultipartConfigElement‌,否则会出现no multi-part configuration异常。


修复方案

方案一:移除手动注册(推荐)

除非有特殊需求,否则无需手动注册DispatcherServlet‌。直接删除该@Bean定义,Spring Boot会自动配置

方案二:显式绑定Multipart配置(如需保留手动注册)

如果必须手动注册(例如需要定制URL映射规则),需 ‌主动注入MultipartConfigElement

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值