【问题标题】:File download dialog IE7 disappearsIE7文件下载对话框消失
【发布时间】:2010-09-30 00:15:35
【问题描述】:

以下代码在安装了最新服务包的 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 中运行。

干杯,
迪米

【问题讨论】:

    标签: c# asp.net .net-3.5 internet-explorer-7 filedialog


    【解决方案1】:

    在我们的 Intranet 上遇到此问题,自动提示下载对我不起作用(已被选中),但确实如此...

    工具 -> Internet 选项

    在“安全”选项卡上选择“本地 Intranet”,然后单击“站点”

    点击高级

    输入“http://your.url.com”并点击添加

    单击关闭 -> 确定 -> 确定

    希望这也适用于你;)

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题,并且花了一个小时感到非常沮丧。像往常一样,微软的 IE 浏览器是所有问题的根源。在其他浏览器中一切正常。解决方案很简单: 用户必须通过转到来调整 IE7 设置 “工具”>“Internet 选项”>“安全”选项卡 > 对于“Internet”和/或“本地 Intranet”,单击“自定义级别...”按钮调整安全设置

      转到“下载”节点“>自动提示文件下载”>选中“启用”

      这为我的用户解决了问题。

      希望对您有所帮助。

      【讨论】:

        【解决方案3】:

        要测试安全性是否导致此问题,请将目标设置为 _self。应该会出现 IE 顶部的警告栏。 如果这是原因,请检查 IE 安全性。特别是提示下载部分。

        【讨论】:

          【解决方案4】:

          我仍然无法让对话框不消失。当应用程序访问 [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 访问它时它可以工作

          【讨论】:

            【解决方案5】:

            添加一个标题,告诉 IE 明确 缓存文件。如果将文件作为无缓存文件发送,IE 存在无法正确保存文件的已知错误。

            【讨论】:

            • 通过调整 IE 中的设置以处理来自特定主机的弹出窗口解决了问题。无论如何感谢您的输入
            猜你喜欢
            • 2013-08-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-07-08
            • 1970-01-01
            相关资源
            最近更新 更多