在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以后])。如下图:
![a38987734b25e9d22d14dcc146c09ab1.png](https://i-blog.csdnimg.cn/blog_migrate/f5bfeb7cfe9b08720c93779179b4f17b.jpeg)
最后,在DispatcherServlet的Servlet配置中加上multipart-config配置(只针对StandardServletMultipartResolver[Spring3.1&Servlet3.0必须在注册Servlet时配置multipart-config]),如:
![1a8e5def4551d7ad22fd4d1168b8bd7c.png](https://i-blog.csdnimg.cn/blog_migrate/1ef85c2354f0fc31662cecf251902bcb.jpeg)
MultipartFile参数
接下来,我们要在Controller方法参数中增加MultipartFile参数,在该参数上加上@RequestPart("paramname")注解,就可以使用了。在Servlet3.0之后,还可以使用Part参数代替MultipartFile参数,同时,并不需要配置MultipartResolver了,只有使用MultipartFile的时候才需要MultipartResolver。
配置web.xml
web.xml中配置项目路径:
![aeb2d6fa451f4a7b7eb3570ddc4c8e2b.png](https://i-blog.csdnimg.cn/blog_migrate/643eb277b818a6ed4c5dd9cf34df1876.jpeg)
配置静态资源访问
servlet-mvc.xml中配置静态资源访问:
![620ba2808a97a2eb628f08bbf6a8cf8d.png](https://i-blog.csdnimg.cn/blog_migrate/1575e2064ee75455d34e1a8e61513f31.jpeg)
如果使用注解配置方式,则是servletConfig实现WebMvcConfigurerAdapter,实现其configureDefaultServletHandling方法。
保存上传的文件
最后,我们在controller中就可以保存上传的文件了:
![9ab76024fcb5681ac8492bad69a12603.png](https://i-blog.csdnimg.cn/blog_migrate/7af388505348d8ce8aaa8e7cb51da2b1.jpeg)