SpringMVC框架提供了文件上传解析功能,它也是对Commons FileUpload的进一步简化封装,下面对其使用配置过程做简单记录。
1、添加相关依赖包
默认项目基于MAVEN工程开发,添加Commons FileUpload依赖坐标如下:
【
注:如果项目不是MAVEN工程,只需要到这里:https://mvnrepository.com/参照坐标下载指定的jar包,导入到项目 WEB-INF 下的 lib 目录下即可。
】1
2
3
4
5
6
7
8
9
10
11
12
13
<!--引入Commons FileUpload start -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.2</version>
</dependency>
<!--引入Commons FileUpload end -->
2、添加文件上传解析器的配置信息
找到项目的Spring配置文件,例如本项目的配置文件为 springApplication.xml,在<beans></beans>
节点下添加新的<bean></bean>
节点申明,代码如下:
注意:其中 id="multipartResolver"
是固定写法,不能写成其他的名字。
1 | <!-- 文件上传解析器 --> |
3、编写前端控制器Controller
以上两步完成后,就可以编写前端控制器了,核心实例代码如下【17行~31行】:
注意:testFileupload方法中,参数MultipartFile
非常重要,它指的是表单中的文件类型,而形参file
指的是表单中文件域的name属性的值,如果形参想设置为其他变量名,就需要使用@RequestParam("file")
来修饰该参数。也就是:public String testFileupload(HttpServletRequest request, @RequestParam("file") MultipartFile myfile)
1 |
|
4、编写前端form表单
文件上传的前端form表单与普通存在几点不同之处:
1、文件上传提交方法必须是POST类型
2、文件上传表单的enctype
必须要写成multipart/form-data
实例代码如下【form表单的申明在14行】:
1 | <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %> |
至此,完成了整个文件上传的所有步骤。
前端页面效果如图所示:
