ASP MVC3 FileResult с акцентами + IE8 - прослушивается? - PullRequest
5 голосов
/ 04 августа 2011

Если имя файла содержит акценты, оно работает должным образом в Opera, FF, Chrome и IE9.

Но в IE8 тип файла "неизвестный тип файла" и показывает "файл" в качестве имени файла(фактически последняя часть URL).

Кто-нибудь знает обходной путь?Кроме замены «специальных» символов в имени файла?

Тестовый код: (файл | новый проект | добавить контроллер)

public class FileController : Controller
{
    public ActionResult Index(bool? Accents)
    {
        byte[] content = new byte[] { 1, 2, 3, 4 };

        return File(content, "application/octet-stream", true.Equals(Accents) ? "dsaé.txt" : "dsae.txt");
    }
}

проверить это так: http://localhost/file, и http://localhost/file?accents=true

Редактировать => «Решение» для меня, если кому интересно:

public class FileContentResultStupidIE : FileContentResult //yeah, maybe i am not totally "politically correct", but still...
{
    public FileContentResultStupidIE(byte[] fileContents, string contentType) : base(fileContents, contentType) { }

    public override void ExecuteResult(ControllerContext context)
    {
        var b = context.HttpContext.Request.Browser;
        if (b != null && b.Browser.Equals("ie", StringComparison.OrdinalIgnoreCase) && b.MajorVersion <= 8)
        {
            context.HttpContext.Response.AppendHeader("Content-Disposition", "attachment; filename=\"" + HttpUtility.UrlPathEncode(base.FileDownloadName) + "\"");
            WriteFile(context.HttpContext.Response);
        }
        else
        {
            base.ExecuteResult(context);
        }
    }
}

Ответы [ 2 ]

2 голосов
/ 04 августа 2011

Попробуйте добавить следующую строку в действие вашего контроллера:

Response.HeaderEncoding = Encoding.GetEncoding("iso-8859-1");

Вы можете взглянуть на следующий пост в блоге , в котором обсуждаются эти проблемы.К сожалению, нет общего решения, которое будет работать среди всех браузеров.

0 голосов
/ 04 августа 2011

Это файл, который пользователь загружает в вашу систему в какой-то момент? Если это так, ограничьте использование акцентов в имени файла. Если нет - не используйте акценты в именах файлов:).

...