springboot 实现上传下载
时间: 2024-03-27 20:34:25 浏览: 63
Spring Boot是一个用于创建独立的、基于Spring的应用程序的框架。它简化了Spring应用程序的开发过程,提供了一种快速构建应用程序的方式。
要实现文件的上传和下载功能,可以使用Spring Boot提供的MultipartFile类和Resource类。
1. 实现文件上传:
- 在Controller中添加一个POST请求处理方法,使用@RequestParam注解接收上传的文件。
- 使用MultipartFile类的transferTo()方法将文件保存到指定位置。
2. 实现文件下载:
- 在Controller中添加一个GET请求处理方法,使用@RequestParam注解接收要下载的文件名。
- 使用Resource类加载文件资源,并返回给客户端。
下面是一个简单的示例代码:
```java
import org.springframework.core.io.Resource;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
@Controller
public class FileController {
private static final String UPLOAD_DIR = "uploads/";
@PostMapping("/upload")
public String uploadFile(@RequestParam("file") MultipartFile file) {
if (file.isEmpty()) {
return "redirect:/error";
}
try {
byte[] bytes = file.getBytes();
Path path = Paths.get(UPLOAD_DIR + StringUtils.cleanPath(file.getOriginalFilename()));
Files.write(path, bytes);
} catch (IOException e) {
e.printStackTrace();
}
return "redirect:/success";
}
@GetMapping("/download")
public ResponseEntity<Resource> downloadFile(@RequestParam("filename") String filename) {
Path path = Paths.get(UPLOAD_DIR + filename);
Resource resource;
try {
resource = new UrlResource(path.toUri());
} catch (MalformedURLException e) {
e.printStackTrace();
return ResponseEntity.notFound().build();
}
return ResponseEntity.ok()
.contentType(MediaType.APPLICATION_OCTET_STREAM)
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + resource.getFilename() + "\"")
.body(resource);
}
}
```
阅读全文