2010-01-28 52 views
2

我一直在開發的一個webapp允許用戶上傳和下載一種文件類型,這意味着被視爲不透明的blob。我的應用程序通過不常用於任何其他目的的文件擴展名來提供它,並指定其MIME內容類型是應用程序/八位字節流。IE6「幫助」將後綴添加到下載的文件

該文件在內部是一個簡單的Zip存檔,其中包含一個壓縮文件。我發現,IE6顯然檢查文件的內容,確定它是一個Zip存檔,並「有用地」用另外的「.zip」擴展名保存它。難以置信的!

正如我所提到的,這個文件是不透明的,我們不希望用戶在文件內部戳動 - 不是因爲它危險或包含敏感信息或任何東西,我們只是不想混淆它們。我建議在Zip內容前添加一個魔術數字以防止IE6識別它,但是我的經理表示,如果文件內容可以保持不變,那麼他會更喜歡它,以便知識淵博的人員可以重命名該文件並檢查其內容作爲zip存檔如有必要。

有什麼辦法可以告訴IE6保留它的手套嗎?還是有其他方法? (唉,根本不支持IE6不是一種選擇。)

順便說一句,IE7尊重文件的名稱,但仍然將其標識爲下載對話框中的Zip歸檔文件。這比IE6好,但還不夠理想。

回答

4

簡短回答:爲您的web服務器添加正確的MIME類型,以便IE6不會猜測文件類型。

龍回答

我的工作曾與Microsoft PowerPoint文件類似的問題。

.ppt vs .pps - 哪些是具有不同擴展名的相同文件。我們希望用戶查看節目(.pps),但IE6不斷將其更改爲.ppt。它改變了擴展,因爲用戶機器安裝了PowerPoint,並且理解文件「看起來」像一個。 PPT。不明白爲什麼不.pps。

除IE6之外,問題是我們的Web服務器(IIS)不知道.pps或.ppt的MIME類型。所以我們必須添加正確的MIME類型,以便服務器不會將它們作爲「application/octet-stream」來傳遞。我知道通過使用「application/octet-stream」,IE6會嘗試猜測MIME類型。

所以我們說:

.pps = "application/vnd.ms-powerpoint" 
.ppt = "application/vnd.ms-powerpoint" 

現在,它正常工作與IE6。

我希望這有助於解決您的問題。

+0

哇,謝謝!我將MIME類型更改爲「application/x-mycompany-ourfiletype」,IE6正在運行。 – Sean 2010-01-28 19:38:38

1

使用此標頭標誌:Content-Disposition:attachment; filename =「yourfilename.extension」

+1

我已經這麼做了。我認爲這是隱含的事實,IE6正在破壞我的文件名,只能以這種方式提供。 – Sean 2010-01-28 18:32:57

1

這是一個known problem,而only solution是編輯客戶端計算機的註冊表,我肯定不會幫你很多。

+0

我能夠解決類似的問題,而無需更改客戶機。看到我的答案。 – Byran 2010-01-28 19:33:59

+0

很高興聽到有解決方案! – jball 2010-01-28 22:41:21