2013-04-11 72 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操作的客戶端的鏈接文件的窗口,被點擊的鏈接時,該文件得到了成功下載。

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