當導入spring集成的文件上傳處理bean時java
<beans:bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <beans:property name="maxUploadSize" value="10485760"></beans:property> <beans:property name="defaultEncoding" value="UTF-8"></beans:property> </beans:bean>
出現錯誤web
Error creating bean with name 'multipartResolver': Failed to introspect bean class [org.springframework...]
從錯誤提示中能夠看出,是因爲缺乏相關的類文件的緣故。MultipartResolver
用於處理文件上傳,當收到請求時 DispatcherServlet
的 checkMultipart()
方法會調用 MultipartResolver
的 isMultipart()
方法判斷請求中是否包含文件。若是請求數據中包含文件,則調用 MultipartResolver
的 resolveMultipart()
方法對請求的數據進行解析,而後將文件數據解析成 MultipartFile
並封裝在 MultipartHttpServletRequest
(繼承了 HttpServletRequest
) 對象中,最後傳遞給 Controller
。MultipartResolver
是一個接口,它的實現類有2個:spring
其中 CommonsMultipartResolver
使用 commons Fileupload 來處理 multipart
請求,因此在使用spring的上傳模塊時,咱們須要引入相應的 jar 包。不過StandardServletMultipartResolver
是基於 Servlet 3.0來處理 multipart請求的,因此不須要引用其餘 jar 包,可是必須使用支持 Servlet 3.0的容器才能夠(tomcat從 Tomcat 7.0以上的版本開始支持 Servlet 3.0)。因爲此處咱們使用的是CommonsMultipartResolver
實現,所以須要引入相應的包,以下所示:tomcat
<dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.3</version> </dependency>