Spring MVC 为文件上传提供了直接的支持,这种支持是通过即插即用的 MultipartResolver 实现的。Spring 用Jakarta Commons FileUpload 技术实现了一个MultipartResolver 实现类:CommonsMultipartResovler。
Spring MVC 上下文中默认没有装配 MultipartResovler,因此默认情况下不能处理文件的上传工作,如果想使用 Spring的文件上传功能,需现在上下文中配置 MultipartResolver。
同时,为了让 CommonsMultipartResovler 正确工作,必须先将 Jakarta Commons FileUpload 及 Jakarta Commons io的类包添加到类路径下。
示例:
1.首先需要加入相关的Jar包(commons-fileupload)
SpringMVC学习笔记-文件上传/20190216154237874.png)
2.然后就是MVC配置文件中配置MultipartResovler,具体如下所示:
| 12
 3
 4
 5
 6
 7
 8
 
 | <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
 
 
 
 <property name="defaultEncoding" value="UTF-8"></property>
 <property name="maxUploadSize" value="102400"></property>
 </bean>
 
 | 
3.在请求页面index.jsp编写如下代码:
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 
 | 
 
 
 
 
 
 
 <form action="testMultipartResolver" method="POST" enctype="multipart/form-data">
 File:<input type="file" name="file"/>
 Desc:<input type="text" name="desc"/>
 <input type="submit"value="Submit"/>
 </form>
 
 | 
4.在控制器类中编写目标方法,用于处理上传请求。
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 
 | @RequestMapping("/testMultipartResolver")public String testMultipartResolver(@RequestParam("desc") String desc,
 @RequestParam("file") MultipartFile file) throws IOException {
 
 System.out.println("decs:" + desc);
 
 System.out.println("OriginalFilename:" + file.getOriginalFilename());
 
 System.out.println("InputStream:" + file.getInputStream());
 return "success";
 }
 
 | 
5.输出结果如下所示
| 12
 3
 
 | decs:my describleOriginalFilename:demo.txt
 InputStream:java.io.ByteArrayInputStream@2e887a00
 
 |