从tomcat服务器下载大型Excel工作表

时间:2019-07-08 13:56:53

标签: java rest spring-boot tomcat hssfworkbook

当有人在Web浏览器中点击REST URL时,我试图触发excel下载。 它非常适合15 MB左右的文件,但大于该大小(例如60 MB)的文件将停止在15 MB左右的位置下载,因此已损坏。 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 MB数据后连接被重置/丢失?还是我需要遵循其他方法来触发excel下载并将其流式传输到客户端?

0 个答案:

没有答案