没有走代码无法设置conten-type,就是请求文件的绝对路径
tomcat/conf/web.xml
找 mime-mapping
节点,增加mime-type
<mime-mapping>
<extension>xls</extension>
<mime-type>application/vnd.ms-excel</mime-type>
</mime-mapping>
后缀名为.xls
的文件Content-Type
是 application/vnd.ms-excel
这样再访问.xls
就是下载了
根据 @wangfulin 的回答,把application/vnd.ms-excel
改成application/octet-stream
一般情况下就是是下载了
这个好像和服务器无关,我试过一个相同的项目用tomcat和weblogic都可以直接下载excel,但另外一个weblogic项目是直接打开excel的,应该和项目配置有关
可以试试用上HTML5的download属性,但是IE全线无解,形如:
<a href="index_logo.gif" download="_5332_.gif">下载</a>
一,浏览器是怎么决定哪些文件下载,哪些文件直接打开的?
浏览器如果支持该文件类型,浏览器会选择直接打开该文件。比如
png
,jpg
,gif
等浏览器如果不支持该文件类型,浏览器会强制直接该文件。比如
zip
,tar
,gzip
等不同的浏览器支持的类型不同,所以可能有些文件在某个浏览器是直接打开,有些是直接下载。比如
IE
会直接打开doc
和docx
文件,谷歌会打开pdf
文件如果浏览器装了某个插件使其支持该文件类型的时候,它也会直接打开这个文件而不是下载这个文件。
二,如何让浏览器强制下载某种类型的文件?
把文件放在
zip
进行打包,由于浏览器无法直接读取该文件,所以会直接下载大部分浏览器可以设置强制下载某一个类型的文件
将文件的
response header
的Content-Type
设置为application/octet-stream
,同时设置 'Content-Disposition' 为attachment
参考:How Browsers Work With File Downloads