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)
2.然后就是MVC配置文件中配置MultipartResovler,具体如下所示:
1 2 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编写如下代码:
1 2 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.在控制器类中编写目标方法,用于处理上传请求。
1 2 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.输出结果如下所示
1 2 3
| decs:my describle OriginalFilename:demo.txt InputStream:java.io.ByteArrayInputStream@2e887a00
|