【问题】使用Spring mvc上传文件时遇到的问题(CommonsMultipartResolver的配置)

框架:SPRING MVC
上传控件:swfupload

后台部分代码:
@RequestMapping(value = "upload")  
private String upload(HttpServletRequest request, HttpServletResponse response) throws Exception{
    //执行下面一句报错
    MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;  
    CommonsMultipartFile file = (CommonsMultipartFile) multipartRequest.getFile("Filedata");
    //略
}


在执行方法的第一句代码时抛错:org.apache.catalina.connector.RequestFacade cannot be cast to org.springframework.web.multipart.MultipartHttpServletRequest

查了下资料发现,在spring配置文件里少了对multipart解析器的配置,如下:
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="maxUploadSize" value="104857600"/>
    <property name="maxInMemorySize" value="4096"/>
</bean>


问题解决。

------------------------
解释:
MultipartHttpServletRequest是Spring mvc提供的一个上传组件,可以在配置文件中配置,也可以用注解实现。
之所以出现上述问题,是因为在没有配置bean的情况下,request未被CommonsMultipartResolver处理。

-----------------
另提:上传时记得加common-fileupload、io的jar包。

猜你喜欢

转载自angelbill3.iteye.com/blog/1946049