Следующий код не будет работать правильно в 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