准备工作
首先对于表单中的enctype属性做一个了解
- application/x-www=form-urlencoded:默认方式,只处理表单中的value的属性值,采用这种编码方式的表单会将表单域中的值处理成URL编码方式
- multipart/form-data:这种编码方式会以二进制流的方式来处理表单数据,这种编码方式会将文件域中的文件夜风撞到请求参数中
- text/plain:除了把空格改为“+”号外,其他字符不做编码处理,这种方式适合直接通过表单来发送邮件
文件上传是一个web项目中很常见的功能,在springmvc中有着很好的支持,但是springmvc默认上下文没有配置MultipartResolver,所以在做文件上传和下载前,需要配置MultipartResolver,
- 在原有包的基础上导入此包
1 | <dependency> |
- 注册MultipartResolver实例,id必须为multipartResolver,id必须为multipartResolver,id必须为multipartResolver,不然报错
1 | <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> |
以下就不赘述springMVC的配置文件了
上传单个文件
页面:
1 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> |
controller:
1 |
|
上传多个文件
其实和上传单个文件很像,只要input控件的name属性是一样的,那它们就是一组,下面来看看代码
controller:(两法,个人偏向于第二种)
1 |
|
1 |
|
页面:
1 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> |
以上都是同步提交,下面我们使用异步提交并且将图片预览出来,这次只演示单个文件上传,多个文件上传同理。
异步提交并提供预览
Controller:
1 |
|
页面:
1 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> |