在Internet Explorer中使用带有空格的Content-Disposition附件文件名

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”。
1个回答

3
如果您的文件名包含空格,它们将被URL编码。实际上,编码的空格字符是%20,我们可以在文件名中看到。
为了避免这种情况,您可以简单地将空格替换为另一个字符,例如_
Response.AddHeader("Content-Disposition", "attachment; filename=\"" + 
   encodeURIComponent(filename.Replace(" ", "_")) + 
"\"");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接