2012-06-25 34 views
0

我有一個頁面可以輸出大量的數據,以Excel 2007支持宏的格式。在創建excel文件後,我的Response.Redirect在最後重定向到另一個頁面,但是當我有大量的數據,即大約60,000多行時,重定向不起作用。 下面是我使用的保存Excel文件中的代碼片段:Response.Redirect不起作用

Response.Clear(); 
Response.AppendHeader("content-disposition", "attachment; filename=RegionData.xlsm"); 
Response.ContentType = "application/octet-stream"; 
wbRegionData.Save(Response.OutputStream);//(); 
Response.End(); 
Response.Redirect("RegionData.aspx?PALID=" + AVListID, true); 

謝謝您的幫助。

+0

所以你想發送文件下載,然後*然後*重定向到另一個網頁?我不確定這是可能的,你試圖它的方式... – McGarnagle

+0

它也看起來像你在重定向之前結束響應?該重定向行不應該被調用。 –

回答

0

您不能因爲您通過調用Response.End();來關閉響應您必須分別定義這兩個操作(下載和重定向)。

0

它不會工作,因爲Respose.End()方法停止頁面的正常執行,我已經重寫了你的代碼並刪除了de Response.End()方法,現在工作。

Response.Clear(); 
    Response.AppendHeader("content-disposition", "attachment; filename=RegionData.xlsm"); 
    Response.ContentType = "application/octet-stream"; 
    wbRegionData.Save(Response.OutputStream);//(); 
    Response.Redirect("RegionData.aspx?PALID=" + AVListID, true); 
+0

謝謝大家的幫助,我確實刪除了將其重定向到另一個頁面的response.end,但我的主要擔心是沒有重定向到另一個頁面,它保存了excel文件。我刪除了保存文件對話框response.redirect行。 再次感謝大家。 – user1090515

1

您不能在同一個服務器響應中執行文件下載和重定向。如果您需要在成功下載文件後執行重定向,則需要以某種方式告訴客戶端成功發生了文件下載,只能通過編寫cookie來完成,據我所知。

我已經創建了jQuery文件下載插件(Demo)(GitHub(Blog Posts),簡化了很多這方面的東西,使用插件的代碼可能是這樣的:

ASP.NET代碼:

Response.Clear(); 
Response.AppendHeader("content-disposition", "attachment; filename=RegionData.xlsm"); 
Response.ContentType = "application/octet-stream"; 
Response.SetCookie(new HttpCookie("fileDownload", "true"){Path = "/"}); 
wbRegionData.Save(Response.OutputStream);//(); 
Response.End(); 

的JavaScript:

$.fileDownload("/urltofiledownload/", { 
    successCallback: function (url) { 
     window.location = "/redirecturl/"; 
    } 
}); 

沒有更多的代碼的我不能給你一個完整的解決方案(看012例如),但我認爲使用插件將是您最容易和最好的選擇。