springboot实现上传下载
时间: 2023-06-29 12:11:17 浏览: 136
Spring Boot 可以通过集成 Spring MVC 模块来实现文件上传和下载功能。
## 文件上传
1. 在 pom.xml 中添加以下依赖:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
```
2. 创建一个文件上传的控制器类,例如:
```java
@RestController
public class FileUploadController {
@PostMapping("/upload")
public String handleFileUpload(@RequestParam("file") MultipartFile file) {
try {
// 保存文件
byte[] bytes = file.getBytes();
Path path = Paths.get(file.getOriginalFilename());
Files.write(path, bytes);
return "上传成功!";
} catch (IOException e) {
e.printStackTrace();
return "上传失败!";
}
}
}
```
上面的代码中,我们使用 @RequestParam 注解来获取上传的文件,然后调用 MultipartFile 的 getBytes() 方法获取文件的字节数组,再使用 Path 和 Files 类将文件保存到本地。
3. 在 application.properties 或 application.yml 中添加以下配置:
```properties
# 文件上传大小限制
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB
```
上面的配置表示最大上传文件大小为 10MB。
4. 在页面中添加文件上传的表单,例如:
```html
<form method="post" enctype="multipart/form-data" action="/upload">
<input type="file" name="file">
<button type="submit">上传</button>
</form>
```
上面的表单中,enctype 属性设置为 multipart/form-data,表示这是一个文件上传的表单。
## 文件下载
1. 创建一个文件下载的控制器类,例如:
```java
@RestController
public class FileDownloadController {
@GetMapping("/download")
public ResponseEntity<byte[]> handleFileDownload() {
try {
// 读取文件
Path path = Paths.get("文件路径");
byte[] bytes = Files.readAllBytes(path);
// 构造响应头
HttpHeaders headers = new HttpHeaders();
headers.setContentDispositionFormData("attachment", "文件名");
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
// 返回响应体
return new ResponseEntity<>(bytes, headers, HttpStatus.OK);
} catch (IOException e) {
e.printStackTrace();
return new ResponseEntity<>(null, null, HttpStatus.INTERNAL_SERVER_ERROR);
}
}
}
```
上面的代码中,我们使用 Path 和 Files 类读取本地的文件,然后构造 ResponseEntity 对象并返回。
2. 在页面中添加文件下载的链接,例如:
```html
<a href="/download">下载</a>
```
点击这个链接就会触发文件下载。
阅读全文