2012-03-24 87 views
1

我想从服务器下载文件。下载时我想更改文件名。 但是,当文件名包含空格时,我无法完全更改文件名。ASP.NET - 文件名包含空格时下载文件

我的代码如下

Response.AddHeader("content-disposition", "attachment; filename=" + fileName); 

这可让用户将文件保存到自己的电脑。 但是,当我保存文件时,只保存文件名的第一个单词。

例如。我想给文件名称(“CCNA Q & A.pdf”),但文件另存为(“CCNA”)

我想知道如何使用空格保存文件名。

回答

0

你试过Server.UrlEncode()吗? 或者,您可以省略所有非字母字符('', - 等),whith _-s(正则表达式替换)。


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

我试图httputility.urlencode。它保存了所有的文件名和扩展名,但是把+放在空格中,并且在&(CCNA Q&A.pdf)中的%26就像(CCNA + Q%26A.pdf)。无论如何节省空间? – user1289926 2012-03-24 13:20:29

+0

我编辑了我的解决方案。 – 2012-03-24 13:32:10

+0

我不知道为什么,但我不明白。 – user1289926 2012-03-26 15:20:07

0
在Firefox

Server.UrlEncode()将与%20 替代空间只是把双引号之间的文件名filename = "\"" + filename + "\"";

0

我有我试图下载有空格的文本文件同样的问题以其名义。我已经使用UrlDecode函数解决了这个问题。当浏览器将空格转换为'+'符号时,使用解码功能需要将这些'+'转换为空格。

fileName = Server.UrlDecode(fileName); 
Response.AddHeader("content-disposition", "attachment; filename=\"" + fileName + "\""); 
0

你必须把它包在附加报价:

Response.AddHeader("content-disposition", "attachment; filename=\"" + fileName + "\""); 
相关问题