在Spring中實現文件下載可以使用以下方法:
@GetMapping("/downloadFile")
public ResponseEntity<Resource> downloadFile() {
Resource resource = new FileSystemResource("path/to/file.txt");
HttpHeaders headers = new HttpHeaders();
headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=file.txt");
return ResponseEntity
.ok()
.headers(headers)
.contentLength(resource.contentLength())
.contentType(MediaType.APPLICATION_OCTET_STREAM)
.body(resource);
}
@GetMapping("/downloadFile")
public void downloadFile(HttpServletResponse response) {
File file = new File("path/to/file.txt");
response.setContentType(MediaType.APPLICATION_OCTET_STREAM.toString());
response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=file.txt");
response.setContentLength((int) file.length());
try (
InputStream inputStream = new FileInputStream(file);
OutputStream outputStream = response.getOutputStream();
) {
IOUtils.copy(inputStream, outputStream);
outputStream.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
這兩種方法都可以實現文件下載,第一種方法使用 ResponseEntity 返回文件資源,第二種方法直接使用 HttpServletResponse 輸出文件流。您可以根據自己的需求選擇其中一種方法來實現文件下載。