当文件大小小于8k时,文件名显示正确, 当超过8k时,无法显示,修改文件后缀后,打开文件,数据全部输出。怎么办
response.reset();
OutputStream fileoutStream = response.getOutputStream();
hssfWorkbook.write(fileoutStream);
String filename = new String(wbname.getBytes(), "ISO-8859-1");
resp.setContentType("application/vnd.ms-excel,charset=utf-8");
resp.addHeader("Content-Disposition", "attachment;filename=\""+filename+".xls\"");
最佳答案
您需要在写入OutputStream
之前添加 header 。当文件足够小时,它可以工作,因为输出被缓冲,但从技术上讲,我认为这是一个错误。 HTTP 协议(protocol)要求首先将所有 header 发送到客户端,然后再发送有效负载。一旦有效负载的第一个字节刷新到套接字,您就无法返回并添加 header 。
关于java HttpServletResponse 文件大小超过 8k,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42991812/