Проблема с загрузкой файла: имя файла с усеченными пробелами!
Пока я работаю над кодом для загрузки файла с сервера, используя:
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.
Решение это просто положить указанное имя файла, и тогда все будет работать как это ожидаемый синтаксис.