2009-09-28 81 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

相关问题