2009-09-28 35 views
3

我試圖在IE8中用分號下載文件名時出現問題。內容處置中的分號文件名

Response.AddHeader("Content-Disposition", "attachment; filename=\"" + attachment.File.FileName + "\""); 

假設attachment.File.FileName = 「測試;測試; Test.txt的」

FF 3.5:它會提示您保存/打開一個名爲「對文件進行測試;測試;測試。文本」。這是理想的結果。

IE8:它會提示您保存/打開名爲「Test」的文件。

我需要弄清楚如何在IE8中獲得想要的結果。

回答

2

您是否使用轉義序列進行了測試; (%3B)?

Response.AddHeader("Content-Disposition", "attachment; filename=\"file%3Bfile%3B.txt\""); 
+1

這確實爲InternetExplorer的工作,但它在瀏覽器中打破瞭如下的RFC(如火狐):百分號編碼僅由RFC2231允許的,但這還需要使用和星兩個頂點:'filename * = utf-8'en'name%20with%20percent%20encoding' – lapo 2011-02-16 16:24:29

+3

這就是特定於IE的語法。別。 – 2012-04-17 09:17:43

+0

這個問題非常明確:「弄清楚如何在IE8中獲得想要的結果」。由於IE不使用RFC,您必須包含特定的修補程序才能使其在該瀏覽器中正常工作。 – Rodrigo 2012-04-17 18:18:21

-1

支票IE的條件,並使用URLEncoder.encode。它會工作。

例如: if (isIE) { fileName = URLEncoder.encode(fileName, "UTF-8"); }

+0

不可以。避免使用特殊套管UA。它從長遠來看會導致很多危害(如未維護/未經測試的代碼分支)。 – 2012-04-17 09:17:19

+0

不幸的是,內容處置文件名在不同的瀏覽器中不能一致處理。如果你想處理nonascii文件名,嗅探是不可避免的。 – Antimony 2012-10-25 20:35:35

相關問題