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

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

问题描述:

虽然我的代码工作,从服务器下载文件中使用:文件下载问题:空格被截断的文件名!

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

的问题是,同时具有文件名空间,与此代码的服务器会自动分割,而在找到第一个空间!

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

我找到了解决办法:)

我们必须围绕文件名用双cotation像:

Response.AddHeader( “内容处置”, “附件;文件名= \”” +路径。 GetFileName(_Filename)+“\”“);

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

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

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

否则,代码假定文件名在第一个空格处结束。您可能不需要Server.UrlPathEncode

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

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

这是与Firefox的情况下..

我发现阿方索·马丁内斯这里的答案:https://bugzilla.mozilla.org/show_bug.cgi?id=221028#c1

[Alfonso Martinez]在#mozillazine中与基督教徒Biesinger和Boris Zbarsky谈过这个问题,他们说这是正确的行为根据RFC。

解决方案只是把引用文件名,然后一切都将 罚款,因为这是预期的语法。