在SpringBoot中实现文件上传和下载功能,通常需要借助Spring的MultipartFile对象来处理文件上传,同时使用OutputStream对象来处理文件下载。以下是一个简单的示例代码:
@RestController
public class FileController {
@PostMapping("/upload")
public String uploadFile(@RequestParam("file") MultipartFile file) {
try {
// 获取文件名
String fileName = file.getOriginalFilename();
// 文件保存路径
String filePath = "C:/upload/";
// 文件保存操作
file.transferTo(new File(filePath + fileName));
return "File uploaded successfully!";
} catch (IOException e) {
e.printStackTrace();
return "Failed to upload file.";
}
}
}
@RestController
public class FileController {
@GetMapping("/download")
public ResponseEntity<Resource> downloadFile(@RequestParam String fileName) {
// 文件路径
String filePath = "C:/upload/";
// 获取文件对象
Resource file = new FileSystemResource(filePath + fileName);
HttpHeaders headers = new HttpHeaders();
headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + fileName);
return ResponseEntity.ok()
.headers(headers)
.contentType(MediaType.APPLICATION_OCTET_STREAM)
.body(file);
}
}
在以上代码示例中,文件上传时,通过@RequestParam注解获取前端传递的文件对象,然后使用transferTo方法保存文件到指定路径。文件下载时,通过ResponseEntity返回文件资源对象,并设置响应头信息,以实现文件下载功能。
需要注意的是,以上代码只是一个简单的示例,实际开发中可能需要加入更多的逻辑来处理文件上传和下载,比如文件格式验证、文件大小限制等。