Spring Boot整合文件的上传

基于Spring Boot实现文件的上传功能。

一、项目中添加依赖

1
2
3
4
5
6
7
8
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

二、设置上传文件的大小

1
2
spring.servlet.multipart.max-file-size=500MB
spring.servlet.multipart.max-request-size=500MB

三、制作文件上传的页面

在resources->templates文件夹下(thymeleaf的默认访问路径)创建upload.xml。内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>文件上传</title>
</head>
<body>
<h2>文件上传</h2>
<hr/>
<!--文件传输格式为POST-->
<form method="POST" enctype="multipart/form-data" action="/upload">
<p>
文件<input type="file" name="file"/>
</p>
<p>
<input type="submit" value="上传"/>
</p>
</form>
</body>
</html>

四、创建文件上传的控制器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
@Controller
public class UploadController {
@RequestMapping("/toUpload")
public String toUpload(){
return "upload";
}
@RequestMapping(value = "/upload", method = RequestMethod.POST)
@ResponseBody
public String uploadFile(MultipartFile file, HttpServletRequest request) {
try {

//创建文件在服务器端的存放路径
String dir = request.getServletContext().getRealPath("/upload");
File fileDir=new File(dir);
//存放路径不存在则创建
if(!fileDir.exists()){
fileDir.mkdirs();
}

//生成文件在服务器端的存放名称
//获取后缀
String fileSuffix=file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
//文件名由UUID生成
String fileName= UUID.randomUUID().toString()+fileSuffix;
//路径+文件名
File files=new File(fileDir+"/"+fileName);

//上传
file.transferTo(files);
} catch (Exception e) {
e.printStackTrace();

return "上传失败";
}
return "上传成功";

}
}

五、测试结果

上传文件保存在webapp->upload中。