2013-04-11 64 views
0

我开发的应用程序,允许用户下载一个excel定期的内容(不更大然后几MB)文件下载文件不起作用IE8。在一些网页上

在IE9的文件被下载的完美,但在IE8的一些允许下载不起作用的网页。

一个新的页面是打开并立即被关闭,而不显示下载栏。

缓存控制标头设置为私有。

我禁用了所有的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上所有下载的工作,这个问题我不是没有看到在响应任何变化。

谢谢

+0

您的文件名变量是否包含文件扩展名? – 2013-04-13 16:50:42

+0

是的文件扩展名是xlsx – AMember 2013-04-13 19:51:33

回答

1

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

既然我已经调用了一系列的Ajax调用服务器查询文件的创建状态,并在文件准备发布的下载通话,IE已经取消了。

要覆盖IE8政策,当文件创建完成我已经POP操作的客户端的链接文件的窗口,被点击的链接时,该文件得到了成功下载。

我希望它有助于某人...