在安装了最新Service Pack的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中工作,我会很好奇。
干杯,
低糜
答案 0 :(得分:2)
添加一个标题告诉IE 显式到CACHE文件。 IE已经知道如果文件作为无缓存文件发送,则无法正确保存文件。
答案 1 :(得分:2)
我遇到了同样的问题,花了一个小时完全沮丧。像往常一样,微软IE浏览器是所有头痛的根源。在其他浏览器中一切正常。解决方案很简单: 用户必须通过转到来调整IE7设置 '工具'> '互联网选项'> '安全'标签>对于“Internet”和/或“本地Intranet”,请单击“自定义级别...”按钮调整安全设置。
转到“下载”节点'>自动提示文件下载'>选中“启用”
为我的用户修复了它。
希望有所帮助。
答案 2 :(得分:1)
如果我们的内部网出现此问题,自动提示下载对我来说不起作用(已被选中),但这确实......
工具 - >互联网选项
在“安全”选项卡上,选择“本地Intranet”,然后单击“站点”
点击高级
键入“http://your.url.com”并单击“添加”
点击关闭 - >好的 - >确定
希望这也适合你;)
答案 3 :(得分:0)
我仍然无法让对话框消失。当应用程序访问[webmethod]以收集信息以传递到尝试将结果下载到excel的页面时,会发生这种情况。
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
访问它时有效答案 4 :(得分:0)
要测试安全性是否导致此问题,请将目标设置为_self。应该出现IE顶部的警告栏。 如果这是原因,请检查IE安全性。特别是提示下载部分。