IE8在某些页面上下载文件不工作

本文关键字:下载 文件 工作 IE8 | 更新日期: 2023-09-27 18:08:33

我正在开发一个应用程序,允许用户下载具有常规内容的excel文件(不大于几Mb)。

在IE9上,文件下载得很好,但是在IE8上,一些允许下载的页面不工作。

立即打开和关闭新页面,而不显示下载栏。

缓存控制头设置为private

我已经禁用了所有的IE8插件

我已经匹配了服务器的响应,允许文件保存的页面和不工作的页面,它们完全匹配(除了路径)

我不知道为什么文件在某些情况下可以完美下载,而在其他情况下却不能。

下面是我用来下载文件的服务器端代码:

protected void GetExportedFile()
{
    string filename = Form("filename");
    if (string.IsNullOrEmpty(filename))
    {
        Logger.Instance.Write("GetExportedFile is missing the parameter filename");
        Response.Redirect("ErrorPage.aspx");
    }
    string filePath = Context.Server.MapPath("****/****/" + filename);
    Response.ClearHeaders();
    Response.ClearContent();
    SetContentType(ContentType.Excel);
    Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}", filename));
    Response.WriteFile(filePath);
    Response.Flush();
    try
    {
        File.Delete(filePath);
    }
    catch (Exception ex)
    {
        Logger.Instance.Write(
            "GetExportedFile failed to delete the file '" + filePath + 
            "', Error: " + ex.ToString(), "Error");
    }
    try
    {
        Response.End();
    }
    catch (ThreadAbortException ex)
    {
        //Don't add anything here.
        //because if you write here in Response.Write,
        //that text also will be added to your text file.
    }
}

我不得不提到,虽然我不认为这是相关的,在下载不工作在IE8我正在做一些ajax调用得到通知,如果excel生成已经完成,而在页面上的工作,我不做这个过程。

我还想补充一下,我的应用程序位于应用程序防火墙(F5)后面,当停用时,所有下载都可以在IE8上工作,问题是我没有看到响应的任何变化。

谢谢

IE8在某些页面上下载文件不工作

如果有人看到这篇文章,我已经找到了问题的原因。IE8有一个安全策略,不允许从脚本请求中直接调用文件下载。

由于我调用了一系列ajax调用服务器查询文件创建状态,当文件准备好发出下载调用时,IE取消了它。

为了覆盖IE8策略,当文件创建完成时,我已经向客户端弹出了一个带有文件链接的窗口,当该链接被点击时,文件被成功下载。