2011-12-20 99 views
0

我有一個aspx頁面,其中包含一個顯示pdf的iframe頁面(我在iframe中顯示pdf時使用了ashx處理程序),我也有一個下載按鈕,它將不同的pdf作爲附件。 下載到瀏覽器的代碼(這是ashx的處理程序)IE中的iframe變空白

byte[] bytes = // get byte array from table 
    Response.Buffer = false; 
    Response.Clear(); 
    Response.ClearContent(); 
    Response.ClearHeaders(); 
    Response.ContentType = "application/pdf"; 
    // [optional] 
    Response.AddHeader(
      "Content-Disposition", 
      string.Format("attachment; filename={0}", attachmentName) 
    ); 
    Response.OutputStream.Write(bytes, 0, bytes.Length); 
    Response.End(); 

此代碼然而,發送此響應瀏覽器我的iframe中一片空白,我必須刷新頁面才能再次見到它後工作正常。我想大部分的解決方案

  1. http://adamyoung.net/IE-Blocking-iFrame-Cookies
  2. http://forums.asp.net/p/1036628/1433536.aspx

但他們沒有工作。 iframe在chrome & FF中表現良好。 注意:如果我下載的東西使用asp:超鏈接到我的ashx和設置目標=「_ blank」它在IE中工作正常,但我需要一些服務器端處理來做,因此我不能使用這種方法。

+0

您使用的是什麼版本的IE?你嘗試過哪些版本? – Xcalibur37 2011-12-21 01:34:40

+0

我使用IE9 n我試過IE 7,8。 – DotNetUser 2011-12-21 03:17:10

回答

1

雖然Chrome和FF離開頁面,但這確實有意義。

您正在回發到服務器,然後清除您的整個輸出,將一個文件放入流中併發送該文件。從技術上講,我會說IE瀏覽器是正確的空白頁面。

這是假設您的下載按鈕是在iframe?

我想嘗試的解決方案是將該下載鏈接放在另一個iFrame中,或者讓另一個頁面下載它,當你按下一個鏈接時,它會打開剛剛輸出文件的新頁面。所以窗口閃爍,然後消失,並出現保存對話框按鈕。然而彈出窗口攔截器可能會試圖阻止這一點。

+0

下載按鈕不在iframe中,按鈕在aspx頁面上。下載按鈕調用一個將瀏覽器響應的ashx處理程序。我不能有一個鏈接,而不是一個按鈕,因爲我必須做一些服務器端處理(以確定哪個pdf文件必須發送到客戶端)並將查詢字符串params傳遞給處理程序以獲得正確的pdf。 – DotNetUser 2011-12-21 14:29:57

+0

那麼爲什麼不按照我的建議把按鈕放在iframe中呢? – 2011-12-22 00:00:31

+0

感謝您的回答,現在我只使用另一個窗口進行下載。在iframe中放置按鈕會讓用戶因爲滾動而變得複雜。 – DotNetUser 2011-12-29 17:58:28