Загрузка файла.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 };