关于IE等浏览器在下载JAR文件时的,将后缀更改为zip等问题及解决方案
最近做的关于jar下载,在这个过程中遇到了以下几个问题:
1、IE、遨游、TT在下载JAR时,会将后缀jar修改为zip;
2、Firefox、Opera在点击下载时,会直接将jar在浏览器中打开,显示乱码;
360及世界之窗两款浏览器可以正常下载,不会将后缀名改为其它的。以上的问题一时让我摸不着头脑,刚开始一直认为是浏览器自身的问题,但是我去UC的网站上下载UC时,它的文件也是JAR的,就可以正常下载并且不会被改名,但是不是直接链接到文件上的。
这个时候我想应该是可以通过写文件流的方式可以解决这个问题,因为在写文件流的时候可以控制文件类型及名称,我就尝试着将文件的直接下载链接,改成通过Servlet写文件流的方式,这种方式IE、遨游、TT、Firefox、360及世界之窗这六款浏览器工作没有问题,都可以正常下载也不会被改名,但是Opera此时会在下载的时候会将jar这个后缀修改为exe,这个更恐怖,让用户以为这是一个病毒;这个时候我也认为是Opera浏览器本身的问题(因为经常在网上看到有人说Opera比较垃圾@_@),在和小科商量后,就准备这样发布,我也正为自己花了近一天的时间解决这个问题而解脱(事实证明完全走反了方向)。
这个时候我的老大横空出现,说这个问题比较有趣,一开始就断定这应该是JBOSS本身的设置问题,做了几个简单的测试后,直接将问题定位到了httpd.conf这个文件中的mime.types上面,打开该文件后发现里面有很多的类型,但是唯独没有jar的类型;这个时候我也意识到将jar的类型加到这个文件中有可能会成功,后面我根据“jar mime”的组合关键字,找到了相应的类型设置:
application/java-archive jar |
将上面那一句话加到mime.types,重启一下服务,上面我提到的七款浏览器都能够正常下载了(看来不是Opera的问题)。
总结:
1、姜是老的辣;
2、不断的提高自己,发现问题的时候首先从自己身上找原因;
本文出自:冯立彬的博客