Проблема с загрузкой файла: имя файла с усеченными пробелами! - PullRequest
16 голосов
/ 17 сентября 2010

Пока я работаю над кодом для загрузки файла с сервера, используя:

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

Проблема заключается в наличии пробелов в имени файла, с этим кодом сервер автоматически разделяется при поиске первого пробела!

Я надеюсь узнать, почему и каково решение для этого?

Ответы [ 4 ]

41 голосов
/ 17 сентября 2010

Вам нужно заключить имя файла в двойные кавычки.

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

В противном случае код предполагает, что имя файла заканчивается первым пробелом.

Возможно, вам не понадобится Server.UrlPathEncode.

5 голосов
/ 17 сентября 2010

Я нашел решение :)

Мы должны заключить имя файла в двойную кавычку, например:

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

Но до сих пор я понятия не имел об этом расколе?

1 голос
/ 17 сентября 2010

Попробуйте ввести в кавычки имя файла, а не кодировать его так, как это указано

Response.AddHeader("Content-Disposition", "attachment; filename=\"" + Path.GetFileName(_Filename) + "\"");
0 голосов
/ 17 января 2014

Это случай с Firefox ..

Я нашел ответ Альфонсо Мартинеса здесь: https://bugzilla.mozilla.org/show_bug.cgi?id=221028#c1

[Альфонсо Мартинес] говорил об этой проблеме в #mozillazineс Кристианом Бизингером и Борисом Збарским, и они сказали, что это правильное поведение в соответствии с RFC.

Решение состоит в том, чтобы просто поставить цитируемое имя файла, и тогда все будет работать нормально, так как это ожидаемый синтаксис.1009 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...