2012-06-25 3 views
0

У меня есть страница, которая экспортирует большое количество данных в формат excel 2007 с поддержкой макроса. У меня есть Response.Redirect в конце для перенаправления на другую страницу после создания файла excel, но перенаправление не работает, когда у меня действительно большой объем данных, например, около 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() останавливает нормальное выполнение страницы, я обновил ваш код и удалю метод 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. Я не получаю диалог сохранения файла при удалении ответ. Прямая линия. спасибо всем снова. – user1090515

1

Вы не можете загрузить файл и перенаправить его в том же ответе сервера. Если вам необходимо выполнить перенаправление после успешной загрузки файла, вам нужно как-то сообщить клиенту, что загрузка файла успешно выполнена, что может быть достигнуто только путем написания файла cookie, насколько я знаю.

Я создал JQuery File Скачать плагин (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/"; 
    } 
}); 

Без больше кода я не могу дать вам полное решение (смотрите на Demo), но я думаю, что использование плагина было бы вашим самым простым и лучшим выбором.

Смежные вопросы