Диалог загрузки файла IE7 исчезает - PullRequest
2 голосов
/ 07 января 2009

Следующий код не будет работать правильно в IE7 с установленными последними пакетами обновления.

System.Web.HttpResponse response = System.Web.HttpContext.Current.Response;
response.Clear();
response.AddHeader("Content-Disposition", "attachment;filename=Contacts.xls");
response.ContentType = "application/octet-stream";

System.Text.UnicodeEncoding Encoding = new System.Text.UnicodeEncoding();

byte[] unicodeBytes = {255,254};
int length = 2 + Encoding.GetByteCount(_exportContent); // _exportContent is string.
response.AddHeader("Content-Length", length.ToString());
response.OutputStream.Write(unicodeBytes, 0, 2);
unicodeBytes = Encoding.GetBytes(_exportContent);
response.OutputStream.Write(unicodeBytes, 2, unicodeBytes.Length);
response.End();

Я открываю страницу aspx с помощью js (window.open ()) и выполняю приведенный выше код в Page_Load ().

Странно то, что окно всплывает, пытается загрузить / показать диалог файла, и затем вы слышите звук, как всплывающее окно заблокировано (хотя блокировщик всплывающих окон деактивирован!).

Дополнительная информация:
- Поведение происходит как на XP, так и на W2k3 (это настоящий веб-сервер, на котором ничего не установлено, кроме IE7 & FW 3.5 SP1 и последних пакетов обновлений). - Тот же код отлично работает с FW 2.0 - Firefox не имеет проблем с отображением диалогового окна файла.

Мне было бы любопытно, если бы кто-то еще сталкивался с такой же проблемой и мог бы предложить решение для того, чтобы заставить это работать в IE7.

Приветствия
Dimi

Ответы [ 5 ]

2 голосов
/ 05 сентября 2009

У меня была та же проблема, и я провел целый час в полном разочаровании. Как обычно Microsoft IE браузеры являются корнем всех головных болей. Все отлично работало в других браузерах. Решение простое: Пользователь должен будет отрегулировать настройки IE7, перейдя в «Инструменты»> «Свойства обозревателя»> вкладка «Безопасность»> Для «Интернет» и / или «Локальная интрасеть» настройте параметры безопасности, нажав кнопку «Пользовательский уровень ...»

Перейдите в узел «Загрузки»> «Автоматическое уведомление о загрузке файлов»> отметьте «Включить»

Это исправило это для моих пользователей.

Надеюсь, это поможет.

2 голосов
/ 07 января 2009

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

1 голос
/ 31 марта 2011

Если бы эта проблема была в нашей интрасети, автоматическое приглашение на загрузку у меня не сработало (уже было выбрано), но это сработало ...

Сервис -> Свойства обозревателя

На вкладке «Безопасность» выберите «Локальная интрасеть», затем нажмите «Сайты»

Нажмите Дополнительно

Введите «http://your.url.com”» и нажмите «Добавить»

Нажмите Закрыть -> ОК -> ОК

надеюсь, что это работает и для вас;)

0 голосов
/ 11 мая 2009

Чтобы проверить, вызывает ли проблема безопасность, установите цель _self. Панель предупреждений в верхней части IE должна появиться. Если это причина, проверьте безопасность IE. В частности, приглашение для загрузки части.

0 голосов
/ 12 января 2009

Я до сих пор не могу заставить диалоговое окно не исчезнуть. Это происходит, когда приложение обращается к [webmethod] для сбора информации для передачи на страницу, которая пытается загрузить результаты, чтобы преуспеть.

            Response.Clear();

            Response.ClearHeaders();
            Response.ClearContent();

            Response.Charset = "";
            Response.ContentType = "application/vnd.ms-excel";
            Response.AddHeader("Content-Disposition", "attachment; filename=\"" + fileNameToUse + "\"");
             Response.CacheControl = "Public";

            Response.Write(output);
            Response.Flush();
            Response.Close();

Это также, по-видимому, происходит только при доступе к веб-сайту по IP-адресу (999.11.1.111 \ default.aspx ....). Работает при доступе к нему через loacalhost \ default.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...