`
laserdance
  • 浏览: 90307 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java web 根据url下载文件IE出错,FF正常

阅读更多
本人在web开发中,导出csv文件时遇到这一问题的,如下
当用户点击导出CSVbutton时,用js自动弹出一个窗口,然后用action配合下载文件名,结果FF测试正常,ie里不能过去,请指点迷津,谢谢

补充:google一番后,文件名的问题也改了,response.setHead也改了,文件名也编码了,就是不成,文件名的后缀名也改过,还是不行,
			String fileSrc = start +"_"+platform+"_"+cycle+"_"+ "download.csv";
			String  fileName = URLEncoder.encode(fileSrc,"UTF-8");
			if(fileName.length()>150){//解决IE 6.0 bug
			      fileName=new String(fileSrc.getBytes("GBK"),"ISO-8859-1");
			}
//			header("Content-Type: application/octetstream; name=$FILEname"); //for IE & Opera 
//			header("Content-Type: application/octet-stream; name=$FILEname"); //for the rest
			response.setContentType("application/octetstream");
			response.addHeader("Content-Disposition", "attachment;filename="
					+fileName);

再补充:如果用迅雷接管下载,而不直接用IE下载,下载也是正常的,即使把localhost加入到IE的信任站点,还是未能解决问题,......
  • 大小: 46.4 KB
分享到:
评论
2 楼 yutian8888 2011-11-08  
谢谢你老兄!我找了很久,在你这里得到的解决!!
1 楼 laserdance 2008-12-26  
问题自己解决了:原因如下:我猜想:由于是从URL来下载,所以我们要显式的设置http的head为
			String fileSrc = start +"_"+platform+"_"+cycle+"_"+ "download.csv";
			String  fileName = URLEncoder.encode(fileSrc,"UTF-8");
			if(fileName.length()>150){//解决IE 6.0 bug
			      fileName=new String(fileSrc.getBytes("GBK"),"ISO-8859-1");
			}
			response.setContentType("application/octet-stream");
			response.addHeader("Content-Disposition", "attachment;filename=\""
					+fileName+"\"");
			[b]response.setHeader("Content-Transfer-Encoding","binary");   [/b]			response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");   
			response.setHeader("Pragma", "public");

相关推荐

Global site tag (gtag.js) - Google Analytics