下面是关于“Spring Boot简单实现文件上传功能”的完整攻略。
准备工作
- 需要在pom.xml中添加如下依赖:
xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
- 在application.properties中添加如下配置:
properties
# 上传文件大小限制
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB
# 临时文件路径
#spring.servlet.multipart.location=/tmp
实现代码
- 首先在Controller中添加如下代码,来实现文件上传功能:
```java
@RestController
@RequestMapping("/file")
public class FileController {
@PostMapping("/upload")
public String upload(@RequestParam("file") MultipartFile file) throws IOException {
if (!file.isEmpty()) {
// 获取文件名
String fileName = file.getOriginalFilename();
// 获取文件后缀
String suffix = fileName.substring(fileName.lastIndexOf(".") + 1);
// 判断上传文件类型是否为指定类型
if (!"jpg".equals(suffix) && !"png".equals(suffix) && !"jpeg".equals(suffix)) {
return "上传失败,文件类型不合法!";
}
// 获取文件保存路径
String filePath = System.getProperty("user.dir") + "/src/main/resources/static/image/";
File dest = new File(filePath + fileName);
// 判断文件父目录是否存在
if (!dest.getParentFile().exists()) {
dest.getParentFile().mkdirs();
}
try {
// 保存文件
file.transferTo(dest);
System.out.println("上传成功");
return "上传成功";
} catch (IOException e) {
e.printStackTrace();
return "上传失败";
}
} else {
return "上传失败,文件为空!";
}
}
}
```
- 为了更加友好的提示信息,可以在前端添加如下代码:
```html
```
然后在Controller中添加如下代码:
```java
@GetMapping("/uploadPage")
public String uploadPage() {
return "upload";
}
@PostMapping("/upload")
public String upload(@RequestParam("file") MultipartFile file, Model model) throws IOException {
if (!file.isEmpty()) {
// 获取文件名
String fileName = file.getOriginalFilename();
// 获取文件后缀
String suffix = fileName.substring(fileName.lastIndexOf(".") + 1);
// 判断上传文件类型是否为指定类型
if (!"jpg".equals(suffix) && !"png".equals(suffix) && !"jpeg".equals(suffix)) {
model.addAttribute("message", "上传失败,文件类型不合法!");
return "upload";
}
// 获取文件保存路径
String filePath = System.getProperty("user.dir") + "/src/main/resources/static/image/";
File dest = new File(filePath + fileName);
// 判断文件父目录是否存在
if (!dest.getParentFile().exists()) {
dest.getParentFile().mkdirs();
}
try {
// 保存文件
file.transferTo(dest);
System.out.println("上传成功");
model.addAttribute("message", "上传成功!");
return "upload";
} catch (IOException e) {
e.printStackTrace();
model.addAttribute("message", "上传失败!");
return "upload";
}
} else {
model.addAttribute("message", "上传失败,文件为空!");
return "upload";
}
}
```
示例说明
示例1:上传所需文件
上传所需文件的示例代码如下:
<form action="/file/upload" method="post" enctype="multipart/form-data">
<table>
<tr>
<td><input type="file" name="file"></td>
</tr>
<tr>
<td><button type="submit">上传文件</button></td>
</tr>
</table>
</form>
<p th:text="${message}"></p>
其中,action
属性指向了上传文件的接口,enctype
属性设置了form表单的编码类型为multipart/form-data
。
示例2:判断文件类型
在上传文件的Controller中,添加了如下判断文件类型的代码:
// 获取文件后缀
String suffix = fileName.substring(fileName.lastIndexOf(".") + 1);
// 判断上传文件类型是否为指定类型
if (!"jpg".equals(suffix) && !"png".equals(suffix) && !"jpeg".equals(suffix)) {
model.addAttribute("message", "上传失败,文件类型不合法!");
return "upload";
}
其中,suffix
变量表示获取上传文件的后缀名,判断上传文件类型是否为指定类型(此处只允许上传.jpg、.png、.jpeg类型的文件)。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring Boot简单实现文件上传功能 - Python技术站