FileStreamResult проблема возврата файлов с определенными именами - PullRequest
1 голос
/ 24 июня 2019

в своей функции я возвращаю FileStreamResult , но в зависимости от имени файла загруженный файл получает странное имя (в некоторых браузерах возвращает имя функции, а в других - имя файла, но все смешанное)

public FileStreamResult _GetFile(long idFile)
{
    //////////
    /// ... get the object 'file'
    //////////

    FileStreamResult retorno = null;
    if (file != null)
    {
        var stream = new MemoryStream(file.Bytes);
        retorno = File(stream, "binary", file.Name);
    }

    return retorno;
}

Когда имя файла имеет ударения и определенный размер, возникает ошибка (например, в chrome загружается файл с именем "_ GetFile" )

если имя файла это что-то вроде этого

áá ââ_abcdefghijlmnpqrstuvxzkwy_abcdefghijlmnopqrstuvxzkwy.abc

выдает ошибку

но эти двое не

áâ_abcdefghijlmnpqrstuvxzkwy.abc

aa aa_abcdefghijlmnpqrstuvxzkwy_abcdefghijlmnopqrstuvxzkwy.abc

UPDATE

Я заметил, что Content-Disposition моего заголовка ответа, когда "не работает", выглядит так

Содержание-расположение: приложение; имя_файла = "=? utf-8? B? w6HDoSAgw6LDol9hYmNkZWZnaGlqbG1ucHFyc3R1dnh6a3d5X2FiY2Rl? =% 0d% 0a =? utf-8? B? ZmdoaWpsbW5vcHdL *5x5w566w5x3x163x3x3x1x161c1x161566566366536363636363) 6

показывает два ?utf-8?, но я до сих пор не понимаю, почему.

(Когда это работает и имя имеет акценты, оно показывает только один ?utf-8?)

Любая помощь будет оценена!

Спасибо!

1 Ответ

0 голосов
/ 25 июня 2019

FileStreamResult имеет свойство FileDownloadName, поэтому вам нужно указать это.

public FileStreamResult _GetFile(long idFile)
{
    //////////
    /// ... get the object 'file'
    //////////

    if (file != null)
    {
        var stream = new MemoryStream(file.Bytes);
        retorno = File(stream, "binary", file.Name);
    }
    var fileName = "Your name here";
    return new FileStreamResult(stream, "binary") {FileDownloadName = fileName;}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...