ASP.NET MVC FileResult с определенным именем файла и Safari или Chrome - PullRequest
1 голос
/ 11 ноября 2010

У меня проблемы с FileResult, возвращающим файл с определенным именем файла.В базе данных имя файла просто и ID + расширение (например: 456789.mp3)

Этот фрагмент кода

FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
return File(fs, "application/octet-stream", "myfile.mp3");

Хорошо работает в любом браузере, кроме браузеров Webkit (Chrome, Safari),Chrome и Safari получают файлы с исходным именем файла (456789.mp3).Когда я добавляю заголовки с помощью

Response.AppendHeader("Content-Disposition", "attachment;filename=myfile.mp3");

Safari получает файл как myfile.mp3attach (уведомление «присоединить», добавленное к расширению?), Однако Chrome получает этот файл как myfile.mp3, присоединить (добавить)прикрепить "к расширению)

Кто-нибудь сталкивался с такой проблемой?

Спасибо

Ответы [ 2 ]

7 голосов
/ 25 января 2011

Мне помогло:

        var encoding = System.Text.Encoding.UTF8;
        Response.Charset = encoding.WebName;
        Response.HeaderEncoding = encoding;

            Response.AddHeader("Content-Disposition", string.Format("attachment; filename=\"{0}\"", (Request.Browser.Browser == "IE") ? HttpUtility.UrlEncode(fileName, encoding) : fileName));

        return File(fs, contentType, fileName);
0 голосов
/ 09 ноября 2015

Ввод

         Response.Clear();
         Response.ClearHeaders();

До

         Response.Charset = encoding.WebName; 

решил это для меня

...