以下代码将无法在安装了最新服务包的 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();
我正在用 js (window.open()) 打开 aspx 页面,并在 Page_Load() 中执行上述代码。
奇怪的是窗口弹出,尝试加载/显示文件对话框,然后你听到弹出窗口被阻止的声音(尽管弹出窗口阻止程序已停用!)。
额外信息:
- XP 和 W2k3(这是一个真正的 Web 服务器,除了 IE7 和 FW 3.5 SP1 和最新的服务包之外没有安装任何其他东西。) - 相同的代码适用于 FW 2.0 - Firefox 没有问题显示文件对话框。
我会很好奇是否有其他人遇到过同样的问题,并且可以提供一个解决方案来让这个东西在 IE7 中工作。
干杯,
迪米