SpringMVC的文件上传功能

  spring MVC为文件上传提供了直接的支持,这种支持是通过即插即用的MultipartResolver(接口)实现的。Spring 用Jakarta Commons FileUpload技术实现了一个MultipartResolver实现类:CommonsMultipartResovler
  Spring MVC 上下文中默认没有装配MultipartResovler,因此默认情况下不能处理文件的上传工作,如果想使用Spring 的文件上传功能,需先在上下文中配置MultipartResolver。
  下面展示如何配置CommonsMultipartResovler,以及如何使用上传文件功能:
  
  
导入jar包:

image_1b1g674tqj56o151iba18fu137r9.png-4.4kB
配置CommonsMultipartResovler:

1
2
3
4
5
6
7
8
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- defaultEncoding: 必须和用户JSP 的pageEncoding属性一致,以便正确解析表单的内容 -->
<property name="defaultEncoding" value="UTF-8"></property>
<!-- 指定上传的文件最大不能超过1000KB -->
<property name="maxInMemorySize" value="1024000"></property>
<!-- 还可以指定其他属性... -->
</bean>

上传示例:


index.jsp

1
2
3
4
5
<form action="testUpload" method="post" enctype="multipart/form-data">
File:<input type="file" name="file" />
Description:<input type="text" name="des" />
<input type="submit" value="Upload" />
</form>


controller

1
2
3
4
5
6
7
8
9
@RequestMapping("/testUpload")
public String testUpload(@RequestParam("file") MultipartFile file, @RequestParam("des") String des)
throws IllegalStateException, IOException {
if (!file.isEmpty()) {
System.out.println("des : " + des);
file.transferTo(new File("G:/UploadTest/" + file.getOriginalFilename()));
}
return SUCCESS;
}


运行程序:

image_1b1g6gesri3q1dsp50svkapq2m.png-11.4kB

在index.jsp选择一个文本文件test.txt,文本中输入MY TEXT,点击Upload:

控制台输出:
image_1b1g6j1e71b9tiaepd1fs0142c13.png-2.7kB

且 G:/UploadTest/ 目录下获取到了该文件:

image_1b1g6k63212tci7e145h19gu1f5h1g.png-10.3kB