3
string filename = Server.UrlPathEncode(Path.GetFileName(_Filename)));
Response.AddHeader("Content-Disposition", "attachment; filename=\"" + encodeURIComponent(filename) + "\"");

我写了这样的代码..

它在所有浏览器中都可以正常工作,但在 Internet Explorer 中,当我单击另存为时它工作正常,但是当单击打开时,我会%20输入文件名..

有人可以让我知道如何克服这个问题

假设文件名是“New text Document.txt”。当我下载后打开文件时,我希望它具有相同的名称。我不想将其视为“New_text_Document.txt”。

有没有办法做到这一点?

它在其他浏览器中对我来说很好。我在 Internet Explorer 中只有这个问题。如果我默认不编码,我会得到文件名“New_text_Document.txt”。

4

1 回答 1

3

如果您的文件名包含空格,它们将被 URL 编码。编码的空格字符实际上是 %20,我们可以在文件名中看到。

为避免这种情况,您可以简单地将空格替换为另一个字符,例如_.

Response.AddHeader("Content-Disposition", "attachment; filename=\"" + 
   encodeURIComponent(filename.Replace(" ", "_")) + 
"\"");
于 2012-06-22T08:48:28.490 回答