在Spring MVC開發場景中,經常會遇到需要上傳并儲存檔案的功能,今天跟着小編來一起學習一下。
MultipartResolver
Spring MVC想要處理檔案,就必須使用MultipartResolver。
配置MultipartResolver:
首先,我們需要在網頁的form表單中添加enctype="multipart/form-data"參數。
然後,在Spring MVC的配置檔案中(spring-mvc.xml)配置MultipartResolver(CommonsMultipartResolver[需要commons-io.jar和commons-fileupload.jar]或者StandardServletMultipartResolver[Spring3.1以後])。如下圖:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5yNzUmZhNzMjVGN2QTY3IDNxgDZyEmZxIjMkZGNiJjZm9CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
最後,在DispatcherServlet的Servlet配置中加上multipart-config配置(隻針對StandardServletMultipartResolver[Spring3.1&Servlet3.0必須在注冊Servlet時配置multipart-config]),如:
MultipartFile參數
接下來,我們要在Controller方法參數中增加MultipartFile參數,在該參數上加上@RequestPart("paramname")注解,就可以使用了。在Servlet3.0之後,還可以使用Part參數代替MultipartFile參數,同時,并不需要配置MultipartResolver了,隻有使用MultipartFile的時候才需要MultipartResolver。
配置web.xml
web.xml中配置項目路徑:
配置靜态資源通路
servlet-mvc.xml中配置靜态資源通路:
如果使用注解配置方式,則是servletConfig實作WebMvcConfigurerAdapter,實作其configureDefaultServletHandling方法。
儲存上傳的檔案
最後,我們在controller中就可以儲存上傳的檔案了: