我在下载文件的时候出现这个问题,搜索了一下网上的解决方案,梳理了一下代码发现是一行代码导致的:
// 如果加上会出现您的主机中的软件中止了一个已建立的连接
// response.reset();
response.setContentType("multipart/form-data;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode(downloadName, "UTF-8"));
return response;
reset():
Clears any data that exists in the buffer as well as the status code and headers. If the response has been committed, this method throws an IllegalStateException.
response.reset()的使用有一个条件受限:response的任何打开流关闭之后都不能再reset .
resetBuffer():
Clears the content of the underlying buffer in the response without clearing headers or status code. If the response has been committed, this method throws an
IllegalStateException.
可以看到resetBuffer方法与reset方法的区别是,头和状态码没有清除。
response.reset() 来清除首部的空白行,这句话是网上看到的最多的一段话,如果去掉了万一有空白行也不行,但是不去掉就导出不了Excel文件,有大佬指点指点不。