轉:關於我使用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,問題解決,至此,整個程式終於可以完整的執行,正常上傳