Я пытаюсь запустить загрузку Excel, когда пользователь нажимает на REST URL в веб-браузере. Он отлично работает для файлов размером около 15 МБ, но файлы больше этого размера (скажем, 60 МБ) перестают загружаться на уровне около 15 МБ и поэтому повреждены. Веб-приложение работает на сервере Tomcat.
@RequestMapping(method = RequestMethod.GET, value = "/alert/csv_file", produces = {"application/json" })
@ResponseBody
public ResponseEntity<Object> getExcel() {
HSSFWorkbook workbook = getExcelSheet();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
workbook.write(bos);
} catch (IOException e) {
e.printStackTrace();
}
byte[] bytes = bos.toByteArray();
try {
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
ByteArrayResource resource = new ByteArrayResource(bytes);
HttpHeaders headers = new HttpHeaders();
headers.add("Cache-Control", "no-cache, no-store, must-revalidate");
headers.add("Pragma", "no-cache");
headers.add("Expires", "0");
headers.add("Content-Disposition", "attachment; filename="abc.xls");
return ResponseEntity.ok().headers(headers).contentLength(bytes.length).contentType(MediaType.parseMediaType("application/octet-stream")).body(resource);
}
Является ли это проблемой tomcat, когда соединение сбрасывается / теряется после потоковой передачи 15 МБ данных?Или мне нужно использовать какой-то другой подход, чтобы запустить загрузку Excel и передать ее клиенту?