Загрузка файла.net на Mac только с добавлением.JPEG

У меня есть старое приложение, которое позволяет загружать и скачивать файлы. Файлы хранятся на диске с именами файлов в базе данных SQL. Чтобы разрешить дублирование имен файлов от пользователей, база данных хранит исходное имя файла пользователя и уникальное имя. Файлы отображаются в ретрансляторе.NET с аргументом команды, в котором указаны оба имени файла (оригинальное и уникальное). Когда файл загружен, код ниже предоставляет файл пользователю с оригинальным именем.

Все отлично работает на ПК с Chrome, IE, FFox. Для пользователей Mac они получают FileName.ext.jpeg, когда должны получать только FileName.ext

Я не очень хорошо разбираюсь в Mac. Могу ли я что-то сделать с ContentType или Content-Dispositon, чтобы исправить это для нескольких пользователей Mac и не повлиять на базу пользователей моего большого ПК?

Вот код для переименования файла, хранящегося на сервере, с исходным именем:

LinkButton btn = (LinkButton)(sender);
string sURL = "";
string sFileName = btn.CommandArgument;

string sOriginalFileName = sFileName.Substring(0, sFileName.LastIndexOf("~"));
string sServerFileName = sFileName.Substring(sFileName.LastIndexOf("~") + 1); ;

sURL = sResourceRoot + "\\" + sServerFileName;

Response.ContentType = "image/jpeg";
Response.AppendHeader("Content-Disposition", "attachment; filename=" + sOriginalFileName);
Response.TransmitFile(Server.MapPath(@"~/" + sURL));
Response.End();

1 ответ

Как правило, вы должны указать свое имя файла в заголовке Content-Disposition - см. Здесь. Обратите внимание, что неожиданные символы имени файла могут сыграть роль в вашей проблеме. Вероятно, стоит использовать встроенный.NET ContentDispositionHeaderValue класс, чтобы помочь создать свой заголовок.

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

Response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = sOriginalFileName };

Другие вопросы по тегам