后端上传代码如下
package com.mouday.demo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
* 文件上传
*/
@Controller
public class FileController {
// 获取上传测试页面
@GetMapping("/upload")
public String upload() {
return "upload";
}
// 单文件上传
@PostMapping("/upload")
@ResponseBody
public String upload(MultipartFile file) {
if (file.isEmpty()) {
return "file is Empty";
}
String filename = file.getOriginalFilename();
try {
File path = this.getUploadDirectory();
File dest = new File(path, filename);
System.out.println(dest.getPath());
file.transferTo(dest);
return new File("/upload", filename).toString();
} catch (IOException e) {
e.printStackTrace();
return "error";
}
}
// 多文件上传
@PostMapping("/multiUpload")
@ResponseBody
public List<String> upload(@RequestParam("file") List<MultipartFile> files) {
List<String> list = new ArrayList<>();
for (MultipartFile file : files) {
list.add(this.upload(file));
}
return list;
}
/**
* 获取文件保存路径
* 参考:https:///A/GBJrE67Wz0/
*
* @return
* @throws FileNotFoundException
*/
public File getUploadDirectory() throws FileNotFoundException {
String pathName = ResourceUtils.getURL("classpath:").getPath();
File path = new File(pathName, "/public/upload");
if (!path.exists()) {
path.mkdirs();
}
return path;
}
}
前端代码
src/main/resources/templates/upload.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h2>单文件上传</h2>
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="提交">
</form>
<h2>多文件上传</h2>
<form action="/multiUpload" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="file" name="file">
<input type="file" name="file">
<input type="submit" value="提交">
</form>
</body>
</html>
因为前端页面需要使用模板引擎,所以需要引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
application.properties 配置上传的文件大小限制
# 上传文件总的最大值
spring.servlet.multipart.max-request-size=10MB
# 单个文件的最大值
spring.servlet.multipart.max-file-size=10MB
参考
- Spring Boot教程(十三):Spring Boot文件上传
- Spring Boot 上传文件 获取项目根路径 物理地址 resttemplate上传文件