Загрузка больших листов Excel с сервера Tomcat - PullRequest
0 голосов
/ 08 июля 2019

Я пытаюсь запустить загрузку 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 и передать ее клиенту?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...