Author:赵志乾
Date:2024-07-04
Declaration:All Right Reserved!!!
1. 添加依赖
在pom.xml中添加excel文件处理库。
<!-- Apache POI for Excel processing -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.2.3</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.3</version>
</dependency>
2. 配置上传相关参数
application.yml中配置文件上传的大小限制。
spring:
servlet:
multipart:
max-file-size: 20MB
max-request-size: 20MB
3. 创建Controller接收文件并保存到本地
@RestController
@RequestMapping("/api/excel")
public class ExcelUploadController {
private final String TARGET_FOLDER = "./";
@PostMapping("/upload")
public ResponseEntity<String> uploadExcelFile(@RequestParam("file") MultipartFile file, @RequestParam("traceId")String traceId) {
if (file.isEmpty()) {
return ResponseEntity.status(400).body("File is empty");
}
try {
// 确保多级目录存在
String filePathName = TARGET_FOLDER+traceId+"/";
File filePath = new File(filePathName);
if(!filePath.exists()){
boolean result = filePath.mkdirs();
if(!result){
return ResponseEntity.status(500).body("Failed to process Excel file");
}
}
// 文件保存到本地
String fileName = file.getOriginalFilename();
Path path = Paths.get(TARGET_FOLDER +traceId+"/"+ fileName).normalize();
Files.copy(file.getInputStream(), path, StandardCopyOption.REPLACE_EXISTING);
return ResponseEntity.ok("Excel file uploaded and processed successfully");
} catch (IOException e) {
e.printStackTrace();
return ResponseEntity.status(500).body("Failed to process Excel file");
}
}
}