1. 程式人生 > >轉:關於我使用spring mvc框架做檔案上傳時遇到的問題

轉:關於我使用spring mvc框架做檔案上傳時遇到的問題

昨天嘗試著用spring mvc框架做檔案上傳,犯了挺多不該犯的毛病

題1:

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.ClassCastException: org.apache.catalina.connector.RequestFacade  

程式剛一執行訪問就丟擲了上面的型別轉換異常資訊,根據提示資訊,找到了導致該異常的程式碼行:

MultipartHttpServletRequest multipartRequest=(MultipartHttpServletRequest)request;

MultipartFile file=multipartRequest.getFile("upload");

這個問題花費了我很多時間和精力,查找了很多相關資料之後,發現我的配置檔案裡少了對multipart解析器的配置:

 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">            <property name="maxUploadSize" value="104857600"/>        

            <property name="maxInMemorySize" value="4096"/> 

</bean>

新增上之後,執行,訪問,上面的異常終於沒有再出現,但是新的問題又來了

問題2:

org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'multipartResolver' defined in ServletContext resource [/WEB-INF/dispatcher-servlet.xml]: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory

這次的問題很明確,缺少檔案包,新增commons-fileupload-1.2.jar,

問題解決,接著又出新問題

問題3:

org.springframework.web.util.NestedServletException: Handler processing failed; 

nested exception is java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStream

新增commons-io-1.3.1,問題解決,至此,整個程式終於可以完整的執行,正常上傳