今天通过poi导出文件的时候,发现在服务器上的时候通过ie总是乱码,刚开始不知道服务器是linux,就把服务器上的环境拿下来做测试,本地都正常,就是在服务器上的时候出问题,后来他们说服务器是linux,然后我就晓得啥问题了.
注意:如果文件名中有空格的话,会linux服务器部署IE访问下载的时候会把空格转成+号
response.reset(); //中文文件名支持,在window服务器上这行代码就可以了 String encodedfileName=new String(fileName.getBytes(), "ISO8859-1");; //获取请求request对象 HttpServletRequest request = Struts2Utils.getRequest(); //在linux服务器上 IE下载必须加上下面这段代码,window也行, if (request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0) { encodedfileName = URLEncoder.encode(fileName, "UTF-8"); } response.setHeader("Content-Disposition", "attachment; filename=\"" + encodedfileName + "\"");
response.reset();的作用
//如果有换行,对于文本文件没有什么问题,但是对于其它格式,比如AutoCAD、Word、Excel等文件下载下来的文件中就会多出一些换行符//0x0d和0x0a,这样可能导致某些格式的文件无法打开,有些也可以正常打开。同//时response.reset()这种方式也能清空缓冲区, 防止页面中的空行等输出到下载内容里去
文章评论
说到点子上了, 找了很久都没解决的问题。太厉害了
@万里独行 偶碰到了也纠结了好几天