在SpringBoot中實(shí)現(xiàn)文件上傳和下載功能,通常需要借助Spring的MultipartFile對(duì)象來(lái)處理文件上傳,同時(shí)使用OutputStream對(duì)象來(lái)處理文件下載。以下是一個(gè)簡(jiǎn)單的示例代碼:
@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/";
// 獲取文件對(duì)象
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);
}
}
在以上代碼示例中,文件上傳時(shí),通過(guò)@RequestParam注解獲取前端傳遞的文件對(duì)象,然后使用transferTo方法保存文件到指定路徑。文件下載時(shí),通過(guò)ResponseEntity返回文件資源對(duì)象,并設(shè)置響應(yīng)頭信息,以實(shí)現(xiàn)文件下載功能。
需要注意的是,以上代碼只是一個(gè)簡(jiǎn)單的示例,實(shí)際開(kāi)發(fā)中可能需要加入更多的邏輯來(lái)處理文件上傳和下載,比如文件格式驗(yàn)證、文件大小限制等。