2010-01-21 137 views
28

我知道如何在Web服务器中更改MIME类型。我使用它来确保浏览器下载我的.scrpt文件,而不是打开纯文本版本。到目前为止这么好,但是可以通过链接做同样的事情吗?我想链接到GitHub上的文件,但是这会以纯文本文件的形式打开。我可以在链接中添加一个“MIME类型属性”来告诉浏览器下载文件吗?将MIME类型添加到HTML链接

这是我想看到的内容:

<a mimetype="application/octet-stream" href="http://gist.github.com/raw/279094/39d5a2c1037288d5ee0ba1a17dca9edb368bbe42/RepairiPhotoDates.scpt">download</a> 
+2

MIME类型不确定是否查看或下载文件。这是根据MIME类型和Content-Disposition标题决定的浏览器。 – Thomas 2010-01-21 15:17:24

+0

我有同样的问题:我想要提供的文件的MIME类型不是由我的托管公司设置的,因此无法更改该文件。是否真的没有办法告诉浏览器在链接它会下载什么? – James 2011-11-29 05:02:42

回答

29

回答我自己的问题的时间。这是一个非常古老的问题,当时可能无法实现,但自那时起很多变化。 HTML5规范增加了download属性:

<a href="hugepdf.pdf" download>Download file</a> 

这样做正是我需要的,告诉浏览器下载文件,而不是打开它。感谢Jonathan Svärdén解决我多年的问题!

+1

[这是令人沮丧的](http://caniuse.com/#search=download) – JensG 2015-04-28 15:51:56

+0

@Cimm你可以告诉如何改变网络服务器的MIME类型 – Muthu 2016-03-11 12:21:15

+0

@muthu这取决于网络服务器。我建议你谷歌“<网络服务器> MIME类型的名称”,并提出另一个问题,如果这不能解决你的问题。这不是真的提出这个问题的地方。 – Cimm 2016-03-11 16:04:08

13

您可以指定一个type attribute,而是由服务器发送的内容类型是权威的。

该属性给出了关于链接目标地址处可用内容的内容类型的建议提示。它允许用户代理选择使用回退机制,而不是在获取内容的时候获取内容,而不是获取内容。

除此之外,不,你不能。

+0

我试过这个,但它不起作用。正如你所解释的......感谢你的明确解释。 – Cimm 2010-01-22 22:32:42

0

HTML不关心HTTP响应头。这绝对是一个服务器端问题,在发送HTTP响应正文(/ content?)之前,必须在HTTP repsonse头文件中解决这个问题。没有像Ruby或PHP这样的脚本语言,你就无能为力。

1

您可以设置一个中间人脚本,将相关文件下载到服务器,然后将其上传到具有不同MIME类型的用户?