2014-03-12 152 views
2

我必須通過HTML鏈接打開文件。 該文件的位置是在另一臺計算機上,並通過IP地址(通過自定義服務器工具) EG不客氣:使用IE下載強制文件

<a href="http://localhost:PORT/FILE.dotx" download>Download</a> 

這個工作在Firefox和Chrome只是罰款,但IE(版本8)解釋文件作爲一個XML文件,並試圖直接打開它。

升級或更改客戶端瀏覽器是不可能的。

是否有可能強制IE下載文件而不使用PHP,VB或Rails? (因爲我們沒有一個Apache服務器或像這樣)

+0

它是dotx還是docx? – yogi

+0

dotx(MS模板) –

+0

你在運行什麼樣的服務器?大多數服務器類型都可以配置特定的文件擴展名來發送額外的頭文件或輸出數據(所以你可以使文件成爲八位字節流,因此瀏覽器不會直接嘗試打開它,或者說它的內容類型是附件,應該在不中斷當前工作流程的情況下下載) – scragar

回答

1

lighttpd.conf樣品,需要mod_setenv:

$HTTP["url"] =~ "\.pdf\?dl$" { 
    setenv.add-response-header = ("Content-Disposition" => "attachment") 
} 

這是唯一可靠的方法。 IE不會信任MIME類型,因爲Apache發送了錯誤的MIME類型,並且微軟「修復了它」

雖然所有的pdf文件都可以簡單地給出下載頭文件,但我選擇了一種更簡潔的方式 - 只有參數?dl激活了這種行爲。普通pdfs仍然會顯示在瀏覽器中,只有附加鏈接?dl才能得到特殊處理。

我實際上是在我的服務器上使用這種技術,但它在PHP中實現,因爲我無法單獨使用靜態處理程序。由於我通過此提供圖像,因此我還添加了Cache: no-transform標題以防止Opera Turbo重新壓縮要下載的文件。

編輯:修正處理詞 - 必須大寫,以便也可以在基於Webkit的瀏覽器中工作。