2012-06-12 57 views
0

我必須在文件下載後重定向到同一頁面!下載文件後無法重定向

當我說的Response.Redirect ..它說後HTTP標頭已被送往

能有人幫我這個不能重定向?

我使用ionic.zip壓縮文件並下載它。

PS:讓我知道,如果我必須做我的問題更加清晰,我可以解釋:(

Response.Clear(); 
    Response.BufferOutput = false; 
    string filename = "results" + ".zip"; 
    Response.ContentType = "application/zip"; 
    Response.AddHeader("content-disposition", "filename=" + filename); 

    using (ZipFile zip = new ZipFile()) 
    { 
     zip.AddDirectory(pathhdf.Value); 
     zip.Save(Response.OutputStream); 
    } 

    Response.Close(); 

    Response.Redirect("Default.aspx"); /// here come my error 

在此先感謝

+1

似乎是這樣的一個類似的問題:http://stackoverflow.com/questions/10778426/how-not-to-abort-http-response-c-sharp – Quintium

+0

謝謝我力氣找到這:) – helpme

回答

3

發送HTTP內容後,您無法發送重定向標頭或任何其他HTTP標頭。在這種情況下,您的HTTP內容就是您的.zip文件,因此在將.zip文件寫入輸出流後,您無法發送重定向標頭。

2

不能從服務器重定向,因爲你不知道!客戶端下載文件需要多長時間,您可以使用javascript interval查詢服務器可能發出的cookie的存在情況,下面是一個nice article的解釋:一旦檢測到cookie,客戶端就知道下載已完成你可以重定向使用例如window.location.href。這裏是一個similar post

1

發送文件後無法重定向。一個請求只能有一個響應,重定向本身就是一個響應。

如果您想同時進行下載和重定向,則必須從客戶端發送兩個請求。開始下載,然後使用setTimeout在足夠長的延遲時間後重定向到Default.aspx,以知道donload已啓動。服務器一次只會回覆一個請求,因此Default.aspx頁面將在下載完成後加載。