2010-01-21 103 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類型的用戶?