首页 > 当<a>标签的href直接链接到web上一个文件时,为什么不能直接下载呢?返回类型text/html

当<a>标签的href直接链接到web上一个文件时,为什么不能直接下载呢?返回类型text/html

没有走代码无法设置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-Typeapplication/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>

一,浏览器是怎么决定哪些文件下载,哪些文件直接打开的?

  1. 浏览器如果支持该文件类型,浏览器会选择直接打开该文件。比如png,jpg,gif

  2. 浏览器如果不支持该文件类型,浏览器会强制直接该文件。比如zip,tar,gzip

  3. 不同的浏览器支持的类型不同,所以可能有些文件在某个浏览器是直接打开,有些是直接下载。比如 IE会直接打开 docdocx 文件,谷歌会打开 pdf 文件

  4. 如果浏览器装了某个插件使其支持该文件类型的时候,它也会直接打开这个文件而不是下载这个文件。

二,如何让浏览器强制下载某种类型的文件?

  1. 把文件放在 zip 进行打包,由于浏览器无法直接读取该文件,所以会直接下载

  2. 大部分浏览器可以设置强制下载某一个类型的文件

  3. 将文件的 response headerContent-Type 设置为 application/octet-stream ,同时设置 'Content-Disposition' 为 attachment

参考:How Browsers Work With File Downloads

【热门文章】
【热门文章】