Некорректное имя файла при сохранении в PDF из IE 11

Обсуждение Stimulsoft Reports.WEB
Ответить
DmitryRu
Сообщения: 163
Зарегистрирован: 19 май 2014, 10:40

Некорректное имя файла при сохранении в PDF из IE 11

Сообщение DmitryRu »

StiMvcViewer, версия 2015.1.11
При просмотре отчета есть возможность сохранить его прямо из Viewer'а во множество форматов, например PDF.
Если отчет имеет русскоязычный Report Alias, то IE 11 по умолчанию предлагает имя файла в виде кракозяблов. В Хроме все в порядке.
Проблема легко воспроизводится на Demo, проект "Using Viewer, Razor".
Надо задать для файла .mrt русскоязычный Report Alias и попробовать выбрать команду Save при просмотре отчета.
Мы такую проблему решали так:

Код: Выделить всё

        /// <summary>
        /// Установить Http-заголовок, с именем скачиваемого файла, с учётом обработки UTF-8 в разных браузерах
        /// </summary>
        /// <param name="httpContext">Http-контекст</param>
        /// <param name="fileName">Имя файла, с которым браузер предложит пользователю сохранить файл</param>
        public static void SetDownloadFileName(this HttpContextBase httpContext, string fileName)
        {
            if (httpContext == null || httpContext.Response == null)
            {
                return;
            }
            var browser = httpContext.Request != null && httpContext.Request.Browser != null ? httpContext.Request.Browser.Browser : null;
            string headerValue;
            switch (browser)
            {
                case "IE":
                case "InternetExplorer":
                    headerValue = "attachment; filename=" + HttpUtility.UrlEncode(fileName, Encoding.UTF8);
                    break;
                case "Firefox":
                    headerValue = "attachment; filename=" + fileName.Replace(" ", "+");
                    break;
                default:
                    headerValue = "attachment; filename=" + fileName;
                    break;
            }
            headerValue += "; filename*=UTF-8''" + HttpUtility.UrlEncode(fileName, Encoding.UTF8);
            httpContext.Response.AppendHeader("Content-Disposition", headerValue);
        }
    }
Аватара пользователя
Vladimir
Сообщения: 415
Зарегистрирован: 06 авг 2008, 09:48
Откуда: Earth

Re: Некорректное имя файла при сохранении в PDF из IE 11

Сообщение Vladimir »

Здравствуйте Дмитрий,

Проблема решена, обновление будет доступно в следующем пререлиз билде.

Решено таким образом:

Код: Выделить всё

response.AddHeader("Content-Disposition", "attachment; filename=\"" + FileName + "\"; filename*=UTF-8''" + HttpUtility.UrlPathEncode(FileName.Replace('%', '_')));
Проверено под различными браузерами, проблем не обнаружено.

Спасибо.
raaad
Сообщения: 23
Зарегистрирован: 17 мар 2017, 11:21

Re: Некорректное имя файла при сохранении в PDF из IE 11

Сообщение raaad »

Здравствуйте, у меня проблема немного другая, но причина у нее та же, я использую Asp.Net MVC:

Невозможно экспортировать файлы отчетов, в названии которых встречаются спец. символы, например скобки ()[] и т.п.

HttpUtility.UrlPathEncode здесь не помогает, т.к. он не соот. rfc5987

P.S. Если нет возможности использовать штатные средства фреймворка, можно подсмотреть его реализацию ;)
HighAley
Сообщения: 1998
Зарегистрирован: 08 июн 2011, 11:36
Откуда: Stimulsoft Office

Re: Некорректное имя файла при сохранении в PDF из IE 11

Сообщение HighAley »

Здравствуйте.

Скобки не являются запрещенными символами, при их наличии в имени отчета, файл сохраняется корректно.
Смотрите прилагаемый скриншот.
photo_2017-03-20_20-19-02.jpg
photo_2017-03-20_20-19-02.jpg (30.04 КБ) 3715 просмотров
С запрещёнными символами, такими как ?, *, / и другими действительно есть проблема, исправим к следующему пререлиз билду.

Спасибо.
raaad
Сообщения: 23
Зарегистрирован: 17 мар 2017, 11:21

Re: Некорректное имя файла при сохранении в PDF из IE 11

Сообщение raaad »

День добрый, да, вы правы, с MVC5 такой проблемы нет.

У нас она проявляется при использовании из WebApi, в котором заголовок Content-Disposition должен быть экранирован в соответствии с rfc5987, но т.к. это за рамками данной темы и мы нашли выход, больше вопросов не имею, спасибо.
Aleksey
Сообщения: 2763
Зарегистрирован: 22 апр 2010, 06:57

Re: Некорректное имя файла при сохранении в PDF из IE 11

Сообщение Aleksey »

Здравствуйте,

Отлично!
Дайте знать, если будут еще вопросы.
Ответить