我正在使用以下代码从服务器下载文件:
Response.AddHeader("Content-Disposition", "attachment; filename=" +
Server.UrlPathEncode(Path.GetFileName(_Filename)));
问题是在文件名中有空格时,使用此代码,服务器会在找到第一个空格时自动拆分!
我希望知道为什么&那是什么解决方案?
答案 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。
解决方案只是放置引用的文件名然后一切都会工作 很好,因为这是预期的语法。