1.点击列表页面的下载按钮,弹出新页面进行下载。
2.下载页面选择路径并确定下载后开始下载文件。
问题:
chrome打开新页面下载,下载完成后关闭下载页面。(这是我期望的结果)
ie打开新页面下载,下载完成后不能关闭下载页面。(这是问题)
主要实现代码:
下载页面主要代码:
response.reset();//可以加也可以不加
response.setContentType("application/x-download");
response.addHeader("Content-Disposition","attachment;filename=slservSearchManage.xls");
SlServSearchManageClient Client = new SlServSearchManageClient();
if(operType.equals("export")){//测试日志导出
Client.exportExcelForTestLog(request,response);
}
%>
<script>
window.close();
self.close();//关闭子页面
</script>
在exportExcelForTestLog方法中获取response.getOutputStream();然后利用这个输出流生成文件。
6 个解决方案
#1
f12 debug 看看是否报错,self是什么,关闭哪个页面??
#2
试试
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
#3
用iframe
<a target="if" href="http://dlsw.baidu.com/sw-search-sp/soft/3a/12350/QQ6.9.13786.0.1422410355.exe">下载</a>
<iframe name="if" style="display:none;"></iframe>
#4
没有报错,ie10下载页面能下载后自动关闭,chrome也能,360浏览器的ie模式打开下载页面后不能自动关闭下载页面。
#5
这个下载也可以,但是有一个问题,数据多的时候文件生成比较耗时,所以在下载之前js弹出一个loading的等待条,在下载页面的js根本就不执行了,所以这个loading不能关闭。
如上面的下载页面主要代码中的js:alert('close download window');根本就没有执行。
if(operType.equals("export")){//测试日志导出
Client.exportExcelForTestLog(request,response);
}
%>
<script>
alert('close download window');
window.close();
self.close();//关闭子页面
</script>
因此我才改成新页面下载的,弹出新页面用户知道已经开始下载了,就不能弹出loading图标了。
#6
不是这个原因导致的
#1
f12 debug 看看是否报错,self是什么,关闭哪个页面??
#2
试试
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
#3
用iframe
<a target="if" href="http://dlsw.baidu.com/sw-search-sp/soft/3a/12350/QQ6.9.13786.0.1422410355.exe">下载</a>
<iframe name="if" style="display:none;"></iframe>
#4
没有报错,ie10下载页面能下载后自动关闭,chrome也能,360浏览器的ie模式打开下载页面后不能自动关闭下载页面。
#5
这个下载也可以,但是有一个问题,数据多的时候文件生成比较耗时,所以在下载之前js弹出一个loading的等待条,在下载页面的js根本就不执行了,所以这个loading不能关闭。
如上面的下载页面主要代码中的js:alert('close download window');根本就没有执行。
if(operType.equals("export")){//测试日志导出
Client.exportExcelForTestLog(request,response);
}
%>
<script>
alert('close download window');
window.close();
self.close();//关闭子页面
</script>
因此我才改成新页面下载的,弹出新页面用户知道已经开始下载了,就不能弹出loading图标了。
#6
不是这个原因导致的