Win7+IE11下,下载文件打开失败

来源:互联网 发布:mac os 彻底删除软件 编辑:程序博客网 时间:2024/05/07 07:52
测试发现一个奇怪的问题,Win7+IE11下,下载文件打开失败。
具体来说,就是当点击下载链接后,IE在窗口底部提示:
要打开或者保存来自1.1.1.1的xxx.csv吗? “打开”“保存”“取消”
如果点击“打开”,则马上提示“无法下载文件xxx.csv”。
但若点击“保存”,而文件能正常下载并打开。

下载的文件是csv格式,content-type是application/ms-excel,Content-disposition是attachment; filename=xxx.csv。是服务侧java直接写response流生成的。

开发PC与测试PC的Windows和IE11版本都相同,但开发PC下载正常,所以自然想到是测试PC的IE或Windows配置有问题。但麻烦的是测试PC要用于办公,不让开发随便折腾。而且测试同事还不让开发重置IE或重启PC,要求开发明确找出来,到底是哪个配置引起这个问题,以便万一客户遇到这个问题,不仅能解决,还能给出合理的解释。

接下来就是上网google,然后将这些方法“反其道而行之”,试图在开发PC上重现这个问题,包括安全设置、文件关联等等,都没能重现。另外甚至能找到MS官网的IE下载失败补丁(2014年发布的),还有说输出流close()引起下载失败的,都没有去尝试了。

后来想办法再借用了十几分钟的测试PC,进行试验:
1、修改IE设置,问题依旧。
2、尝试把协议从https改http,问题依旧。
3、使用F12打开调试,查看网络流量,可以看到,在点击下载链接之后,但在点击“打开”按钮之前,其实http下载已经完成了。在调试窗口把响应数据流另存为csv并打开,也是正确的。
4、还发现一个细节,开发PC上点击“打开”后,会显示“安全检查...”,然后excel自动打开csv;但测试PC上,点击“打开”后马上显示“无法下载文件xxx.csv”。

最终第一天无功而返。
第二天,想到了一个问题:为什么保存正常,而直接打开就不行,甚至都不做安全扫描?这说明应该是文件都没有生成。保存一般是放到download目录,而直接打开是放到IE临时文件夹,那么很可能是临时文件夹满了(或超过设置了),导致文件不能生成!

再借测试PC来看,果然上面的IE临时文件夹占了3G多(设置的是200M左右),而且用IE的“删除临时文件”功能后,一点都没减少。继续google,反馈类似问题的人不少,MS也提供了解决方法。正想将它用到测试PC上,结果测试同事说已经将PC重启了,重启后,问题消失!(补充一下,我们还让测试PC访问了其他有类似下载/导出功能的网站,照样出现这个问题。看到这个现象,测试同事认可这不是产品的代码问题,也没有再深究)。



0 0