1、创建项目
首先创建一个springboot项目,pom.xml文件中引入spring-boot-starter-web起步依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
2、编写文件上传html页面
在src/main/resources/static文件夹下创建并编写fileupload.html文件,form表单添加action,method为post类型,enctype为multipart/form-data
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>文件上传</title>
</head>
<br>
<form action="fileupload.action" method="post" enctype="multipart/form-data">
上传文件:<input type="file" name="file"/></br>
<input type="submit">
</form>
</body>
</html>
3、编写controller
/**
* User:tumbler
* Desc:文件上传Controller
*/
@RestController
public class FileUpLoadController {
@RequestMapping("fileupload.action")
public Map<String, Object> fileUpLoad(MultipartFile file) {
//文件名
String fileName = file.getOriginalFilename();
System.out.println(fileName);
//将文件保存到本地磁盘
try {
file.transferTo(new File("D:/workdemo/"+fileName));
} catch (IOException e) {
System.out.println("文件转换异常");
e.printStackTrace();
}
Map<String, Object> map = new HashMap<>();
map.put("msg", fileName);
return map;
}
}
@RestController 是一个复合注解,包括@Controller和@ResponseBody,使用@RestController注解类,相当于类下的所有方法都返回json格式的数据,省去在每个方法上写@ResponseBody注解。
4、启动项目并测试
启动项目后浏览器输入:http://localhost:8080/fileupload.html,出现以下页面
选择文件后点击上传,首先选择一个txt类型文件,上传成功!
然后选择一个较大文件则发生错误,报错信息如下:
org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (158293566) exceeds the configured maximum (10485760)
很明显,这是上传文件的大小过大,那么我们需要在配置文件application.properties中设置上传文件的大小配置:spring.servlet.multipart.max-file-size默认值为1MB, spring.servlet.multipart.max-request-size默认值为10MB,将他们进行修改,完成后重启测试上传大于1MB小于200MB的文件,上传成功。
# 设置单个文件的最大大小,单位为全称不能写M
spring.servlet.multipart.max-file-size=200MB
# 设置一个请求所支持的总共文件大小
spring.servlet.multipart.max-request-size=400MB