Проблема с загрузкой файла: имя файла с усеченными пробелами!

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

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

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

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

Ответы

Ответ 1

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

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

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

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

Ответ 2

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

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

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

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

Ответ 3

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

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

Ответ 4

Это в случае с firefox..

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

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

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