springboot 后端上传附件
时间: 2024-12-30 18:29:31 浏览: 5
### 如何在Spring Boot中实现文件上传功能
#### 创建Spring Boot项目并配置依赖
为了支持文件上传,在`pom.xml`文件中应确保引入了必要的依赖项,比如Spring Web模块。这使得能够利用Spring MVC的强大特性来处理HTTP请求[^1]。
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
```
#### 配置application.properties/yml
适当调整应用属性设置以适应大尺寸文件或其他特定需求:
```properties
# application.properties example
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB
```
或者对于YAML格式的应用程序配置文件:
```yaml
# application.yml example
spring:
servlet:
multipart:
max-file-size: 10MB
max-request-size: 10MB
```
上述配置允许最大单个文件大小以及整个multipart/form-data表单的最大容量都设定为10MB[^3]。
#### 编写控制器接收文件
定义一个RESTful API用于接受客户端发送过来的一个或多个文件。这里展示了一个简单的例子,它既可以处理单一也可以批量的文件上传操作[^5]。
```java
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
@RestController
@RequestMapping("/api/files")
public class FileUploadController {
@PostMapping("/uploadSingle")
public String handleFileUpload(@RequestParam("file") MultipartFile file){
try {
byte[] bytes = file.getBytes();
// Save the file or process it as needed.
return "You successfully uploaded '" + file.getOriginalFilename() + "'";
} catch (IOException e) {
return "Failed to upload " + file.getOriginalFilename() + ": " + e.getMessage();
}
}
@PostMapping("/uploadMultiple")
public List<String> handleMultiFileUpload(@RequestParam("files") List<MultipartFile> files){
List<String> filenames = new ArrayList<>();
for(MultipartFile file : files){
try{
byte[] bytes = file.getBytes();
// Process each file here...
filenames.add(file.getOriginalFilename());
}catch(IOException ex){
filenames.add("Error with "+file.getOriginalFilename()+": "+ex.getMessage());
}
}
return filenames;
}
}
```
这段代码展示了两个不同的API端点:一个是用来单独上传文件(`/uploadSingle`);另一个则是允许多个文件的同时提交(`/uploadMultiple`)。当接收到文件后,可以通过读取字节数组的形式获取其内容,并进一步保存到服务器本地磁盘或者其他持久化存储解决方案中去[^4]。
阅读全文