文件下载问题:文件名被空格截断!

时间:2010-09-17 15:08:41

标签: asp.net c#-4.0

我正在使用以下代码从服务器下载文件:

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

问题是在文件名中有空格时,使用此代码,服务器会在找到第一个空格时自动拆分!

我希望知道为什么&那是什么解决方案?

4 个答案:

答案 0 :(得分:41)

您需要用双引号括起文件名。

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

否则,代码假定文件名在第一个空格处结束。

您可能不需要Server.UrlPathEncode

答案 1 :(得分:5)

我找到了解决方案:)

我们必须用双引号括起文件名,如:

Response.AddHeader(“Content-Disposition”,“attachment; filename = \”“+ Path.GetFileName(_Filename)+”\“”);

但到目前为止,我对这种分裂没有任何想法?

答案 2 :(得分:1)

尝试引用文件名而不是像这样编码

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

答案 3 :(得分:0)

这是firefox的情况..

我在这里找到了Alfonso Martinez的回答:https://bugzilla.mozilla.org/show_bug.cgi?id=221028#c1

  

[Alfonso Martinez]在#mozillazine和Christian谈论这个问题   Biesinger和Boris Zbarsky,他们说这是正确的行为   根据RFC。

     

解决方案只是放置引用的文件名然后一切都会工作   很好,因为这是预期的语法。