日期:2014-05-17  浏览次数:20876 次

springmvc上传文件的问题
我在使用了springmvc实现文件上传时出现了
 org.apache.catalina.connector.RequestFacade cannot be cast to org.springframework.web.multipart.MultipartHttpServletRequest 这个错误。
网上的解决方案我试了,添加
<bean id="multipartResolver"  class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  <property name="maxUploadSize">   
<value>104857600</value>  
</property>  
<property name="maxInMemorySize"> 
  <value>4096</value>  
</property> 
</bean>
使用action提交表单请求上传文件时,解决了问题,一切正常,但是我在做的项目要求不能进行页面跳转,所以使用了ajax的方法提交表单,这样一来原来的错误又出现了。

我调试了一下,发现貌似配置的bean multipartResolver没有起到任何作用,上传文件的函数中获得的request还是org.apache.catalina.connector.RequestFacade类型的,而使用action提交表单时,函数中获得的request是org.springframework.web.multipart.MultipartHttpServletRequest类型的。

为什么呢?应该怎么解决呢?请各位大神多多指教。谢谢!

------解决方案--------------------
可以隐藏一个iframe,还得用表单才可以
------解决方案--------------------
先在你的spring.xml中加入
<!-- ========================================== -->
            <!-- Spring 上传下载设置 -->
<!-- ========================================== -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" > 

    <property name="defaultEncoding" value="UTF-8"/> <!-- 默认编码 (ISO-8859-1) -->  
    
    <property name="maxInMemorySize" value="10240"/> <!-- 最大内存大小 (10240)-->  

    <property name="maxUploadSize" value="-1"/> <!-- 最大文件大小,-1为无限止(-1) -->  
</bean>  
然后你的上传方法必须加上
@ResponseBody @RequestMapping("/upload.shtml")
public void upload(@RequestParam MultipartFile file, HttpServletRequest request,HttpServletResponse response){
}

你试试