当有人在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下载并将其流式传输到客户端?