主要内容:以实现文件上传目的,进行项目搭建。
IDEA 2018.3;SpringMVC 4.3.21.RELEASE
使用springMVC框架要实现文件的上传下载要额外添加commons
文章目录
CommonsMultipartResolver的属性解析
属性 | 描述 |
---|---|
defaultEncoding | 表示用来解析request请求的默认编码格式,当没有指定的时候根据Servlet规范会使用默认值ISO-8859-1。当request自己指明了它的编码格式的时候就会忽略这里指定的defaultEncoding。 |
uploadTempDir | 设置上传文件时的临时目录,默认是Servlet容器的临时目录。 |
maxUploadSize | 设置允许上传的总的最大文件大小,以字节为单位计算。当设为-1时表示无限制,默认是-1。 |
maxUploadSizePerFile | 跟maxUploadSize差不多,不过maxUploadSizePerFile是限制每个上传文件的大小,而maxUploadSize是限制总的上传文件大小。 |
maxInMemorySize | 设置在文件上传时允许写到内存中的最大值,以字节为单位计算,默认是10240。 |
resolveLazily | 为true时,启用推迟文件解析,以便在UploadAction中捕获文件大小异常。 |
文件上传
1. 创建一个Maven项目,填写配置文件
- 在pom.xml文件中额外添加commons-fileupload-1.3.3.jar
<!-- commons-fileupload -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.3</version>
</dependency>
- 在springMVC配置文件内添加MultipartResolver配置
<!-- 注意:CommonsMultipartResolver的id是固定不变的,一定是multipartResolver,不可修改 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 如果上传后出现文件名中文乱码可以使用该属性解决 -->
<property name="defaultEncoding" value="UTF-8"/>
<!-- 单位是字节,不设置默认不限制总的上传文件大小,这里设置总的上传文件大小不超过10M(10*1024*1024) -->
<property name="maxUploadSize" value="10485760"/>
<!-- 跟maxUploadSize差不多,不过maxUploadSizePerFile是限制每个上传文件的大小,而maxUploadSize是限制总的上传文件大小 -->
<property name="maxUploadSizePerFile" value="10485760"/>
</bean>
2. 创建uploadForm.jsp页面和controller控制器
- uploadForm.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>文件上传</title>
</head>
<body>
<h1>文件上传</h1>
<form action="test/upload" enctype="multipart/form-data" method="post">
<table>
<tr>
<td>请选择文件:</td>
<td><input type="file" name="file"></td>
</tr>
<tr>
<td><input type="submit" value="上传"></td>
</tr>
</table>
</form>
</body>
</html>
- Servlet .java
@Controller
@RequestMapping("/test")
public class Servlet {
@PostMapping("/upload")
public String upload(HttpServletRequest request, @RequestParam("file") MultipartFile file)