文件下载问题:空格被截断的文件名!
问题描述:
虽然我的代码工作,从服务器下载文件中使用:文件下载问题:空格被截断的文件名!
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。
解决方案只是把引用文件名,然后一切都将 罚款,因为这是预期的语法。