Springboot Controller文件夹上传
时间: 2025-01-07 13:53:33 浏览: 43
### 实现 Spring Boot 文件夹上传
在 Spring Boot 项目中实现文件夹上传功能涉及多个方面,包括配置文件设置、控制器编写以及前端页面设计。下面详细介绍这一过程。
#### 配置文件调整
为了支持多文件上传,在 `application.properties` 或者 `application.yml` 中需要增加如下配置项[^1]:
对于 properties 文件:
```properties
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB
```
对于 yml 文件:
```yaml
spring:
servlet:
multipart:
max-file-size: 10MB
max-request-size: 10MB
```
这些属性用于设定单个文件大小限制和整个请求的最大尺寸。
#### 创建主启动类
确保已经创建了一个标准的 Spring Boot 启动应用类,例如名为 `FileUploadApplication.java` 的文件应该看起来像这样[^2]:
```java
package cn.juwatech.fileupload;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class FileUploadApplication {
public static void main(String[] args) {
SpringApplication.run(FileUploadApplication.class, args);
}
}
```
#### 编写控制层代码
接下来定义一个控制器来接收来自客户端提交的数据流,并保存到服务器端指定位置。这里假设要处理的是批量图片或其他类型的文档资料。可以利用 `@RequestParam` 注解获取表单字段中的文件列表对象,再通过循环遍历的方式逐一对每个文件进行操作[^3]:
```java
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.util.List;
@RestController
@RequestMapping("/api/files")
public class FolderUploadController {
private final String UPLOAD_DIR = "uploads/";
@PostMapping("/uploadFolder")
public String handleFileUpload(@RequestParam("files") List<MultipartFile> files){
try{
for (MultipartFile file : files){
byte[] bytes = file.getBytes();
File dirToSaveFiles = new File(UPLOAD_DIR);
if (!dirToSaveFiles.exists()){
dirToSaveFiles.mkdirs(); // 如果目录不存在,则创建它
}
File serverFile = new File(dirToSaveFiles.getAbsolutePath() + File.separator + file.getOriginalFilename());
file.transferTo(serverFile);
}
return "成功上传";
} catch (IOException e){
return "失败:" + e.getMessage();
}
}
}
```
这段代码实现了基本的文件夹上传逻辑,即允许用户一次选择多个文件并通过 POST 请求发送给服务端;之后会依次读取每一个 MultipartFile 对象的内容并将其存放到本地磁盘上预先定义好的路径下。
#### 前端页面开发
考虑到用户体验友好度,通常还会配合 HTML 表单或者其他 JavaScript 库(如 jQuery-File-Upload 插件)一起工作,以便于让用户能够方便地选取待上传的目标文件集合。此处仅给出最简单形式的一个示例:
```html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8"/>
<title>文件夹上传</title>
</head>
<body>
<h2>请选择您想要上传的文件:</h2>
<form method="POST" action="/api/files/uploadFolder" enctype="multipart/form-data">
<input type="file" name="files" multiple/>
<button type="submit">上传</button>
</form>
</body>
</html>
```
此段HTML片段展示了怎样构建一个多选文件输入框及相应的提交按钮,当点击该按钮时就会触发向 `/api/files/uploadFolder` 发送带有附件数据包的HTTP POST请求。
阅读全文
相关推荐


















