springboot下载文件超大
时间: 2023-11-11 22:00:38 浏览: 60
您可以使用Spring Boot提供的StreamingResponseBody来实现下载超大文件的功能。StreamingResponseBody是一个接口,它允许您将响应主体作为流式传输发送。这意味着您可以将文件分块传输,而不必将整个文件加载到内存中。
以下是一个示例代码:
```java
@GetMapping("/download")
public ResponseEntity<StreamingResponseBody> downloadFile() throws IOException {
File file = new File("path/to/your/file");
InputStream inputStream = new FileInputStream(file);
StreamingResponseBody responseBody = outputStream -> {
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
inputStream.close();
};
return ResponseEntity.ok()
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + file.getName() + "\"")
.body(responseBody);
}
```
在上面的代码中,我们首先打开文件并创建一个InputStream对象。然后,我们创建一个StreamingResponseBody对象,并在其中使用while循环将文件内容写入响应主体。最后,我们将StreamingResponseBody对象包装在ResponseEntity中,并设置Content-Disposition标头以指示浏览器下载文件。