spring boot文件上传下载代码
时间: 2023-10-08 16:06:01 浏览: 54
以下是 Spring Boot 实现文件上传和下载的代码示例:
文件上传:
```java
@PostMapping("/upload")
public String uploadFile(@RequestParam("file") MultipartFile file) {
try {
// 保存文件到本地
Path filePath = Paths.get("uploads", file.getOriginalFilename());
Files.copy(file.getInputStream(), filePath, StandardCopyOption.REPLACE_EXISTING);
return "上传成功";
} catch (Exception e) {
return "上传失败:" + e.getMessage();
}
}
```
文件下载:
```java
@GetMapping("/download")
public ResponseEntity<Resource> downloadFile(@RequestParam("fileName") String fileName) {
try {
// 读取文件
Path filePath = Paths.get("uploads", fileName);
Resource resource = new UrlResource(filePath.toUri());
// 构建响应实体
HttpHeaders headers = new HttpHeaders();
headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + fileName);
return ResponseEntity.ok()
.headers(headers)
.contentLength(resource.contentLength())
.contentType(MediaType.APPLICATION_OCTET_STREAM)
.body(resource);
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
}
}
```
其中,`@PostMapping("/upload")` 和 `@GetMapping("/download")` 是 Spring MVC 的注解,分别用于处理文件上传和文件下载的请求。在文件上传方法中,使用 `@RequestParam("file")` 注解来获取上传的文件。在文件下载方法中,使用 `@RequestParam("fileName")` 注解来获取需要下载的文件名。
在上传文件时,将文件保存到指定的本地路径中,这里使用了 `Files.copy()` 方法。在下载文件时,先将文件读取为 `Resource` 类型,然后使用 Spring 的 `ResponseEntity` 构建一个响应实体,设置响应头和响应体,最后返回给客户端即可。