SpringMVC文件上传报错org.apache.catalina.connector.RequestFacade cannot be cast to org.springframework.web.multipart.MultipartHttpServletRequest
错误信息:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | java.lang.ClassCastException: org.apache.catalina.connector.RequestFacade cannot be cast to org.springframework.web.multipart.MultipartHttpServletRequest ... at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 39 ) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 25 ) at java.lang.reflect.Method.invoke(Method.java: 597 ) at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java: 213 ) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java: 126 ) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java: 96 ) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java: 617 ) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java: 578 ) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java: 80 ) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java: 923 ) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java: 852 ) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java: 882 ) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java: 789 ) at javax.servlet.http.HttpServlet.service(HttpServlet.java: 637 ) at javax.servlet.http.HttpServlet.service(HttpServlet.java: 717 ) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java: 290 ) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java: 206 ) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java: 88 ) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java: 76 ) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java: 235 ) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java: 206 ) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java: 233 ) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java: 191 ) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java: 127 ) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java: 102 ) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java: 109 ) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java: 298 ) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java: 852 ) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java: 588 ) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java: 489 ) at java.lang.Thread.run(Thread.java: 619 ) |
错误定位:
1 | MultipartHttpServletRequest mulRequest = (MultipartHttpServletRequest) request; |
解决办法:
步骤一:Spring配置文件中添加配置
1 2 3 4 5 | <bean id= "multipartResolver" class = "org.springframework.web.multipart.commons.CommonsMultipartResolver" > <property name= "maxUploadSize" value= "10485760" /> <property name= "maxInMemorySize" value= "40960" /> </bean> |
步骤二:前端页面的form表单中添加: enctype ="multipart/form-data"
1 | <form id= "fileForm" method= "POST" enctype= "multipart/form-data" action= "/InvalidCard/DoForExcel" > |
两个步骤后我的问题解决了,如果你的问题仍然存在,请留言联系我。
另:如果完成步骤一二后,报此异常:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory at java.lang.Class.getDeclaredConstructors0(Native Method) at java.lang.Class.privateGetDeclaredConstructors(Class.java: 2389 ) at java.lang.Class.getDeclaredConstructors(Class.java: 1836 ) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java: 229 ) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineConstructorsFromBeanPostProcessors(AbstractAutowireCapableBeanFactory.java: 962 ) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java: 935 ) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java: 485 ) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java: 456 ) at org.springframework.beans.factory.support.AbstractBeanFactory$ 1 .getObject(AbstractBeanFactory.java: 294 ) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java: 225 ) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java: 291 ) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java: 193 ) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java: 585 ) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java: 913 ) ... |
请在pom文件中添加:
1 2 3 4 5 | <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version> 1.3 . 1 </version> </dependency> |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?