springboot文件上传下载如何实现
时间: 2023-11-16 10:47:06 浏览: 113
spring webflux demo
Spring Boot提供了一些方便的类和方法来实现文件上传和下载。下面分别介绍如何实现文件上传和文件下载。
## 文件上传
### 1. 引入依赖
在 `pom.xml` 文件中添加以下依赖:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 添加文件上传依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
```
### 2. 配置文件上传路径
在 `application.properties` 文件中添加以下配置:
```properties
# 上传文件保存目录
spring.servlet.multipart.location=上传文件保存目录
# 文件上传限制
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB
```
### 3. 编写文件上传接口
在控制器中编写文件上传接口:
```java
@RestController
public class FileController {
@PostMapping("/upload")
public String uploadFile(@RequestParam("file") MultipartFile file) throws IOException {
// 获取上传文件名
String fileName = file.getOriginalFilename();
// 保存上传文件
file.transferTo(new File("上传文件保存目录/" + fileName));
return "上传成功!";
}
}
```
### 4. 测试文件上传
启动应用后,使用 `curl` 命令或者浏览器访问 `http://localhost:8080/upload` 接口进行文件上传,例如:
```bash
curl -X POST -F file=@/path/to/file http://localhost:8080/upload
```
## 文件下载
### 1. 编写文件下载接口
在控制器中编写文件下载接口:
```java
@RestController
public class FileController {
@GetMapping("/download")
public ResponseEntity<Resource> downloadFile(@RequestParam("fileName") String fileName) throws IOException {
// 获取文件流
InputStreamResource resource = new InputStreamResource(new FileInputStream("文件保存目录/" + fileName));
// 设置响应头
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Disposition", "attachment; filename=" + fileName);
// 返回文件流
return ResponseEntity.ok()
.headers(headers)
.contentLength(resource.contentLength())
.contentType(MediaType.APPLICATION_OCTET_STREAM)
.body(resource);
}
}
```
### 2. 测试文件下载
启动应用后,使用 `curl` 命令或者浏览器访问 `http://localhost:8080/download?fileName=文件名` 接口进行文件下载,例如:
```bash
curl -OJL http://localhost:8080/download?fileName=example.txt
```
阅读全文