2012-06-25 1 views
0

2007 매크로 사용 형식을 능가하기 위해 많은 양의 데이터를 내보내는 페이지가 있습니다. Response.Redirect 끝에 다른 페이지로 리다이렉트 파일을 만들었지 만 리다이렉트는 실제로 많은 양의 데이터 즉 약 60,000 개 이상의 행이있을 때 작동하지 않습니다. 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는 제거했지만 내 주요 관심사는 다른 페이지로 리디렉션되지 않습니다. 해당 페이지는 엑셀 파일로 저장됩니다. 제거하면 파일 저장 대화 상자가 표시되지 않습니다. response.redirect 라인. 다시 한번 감사드립니다. – user1090515

1

동일한 서버 응답으로 파일 다운로드 및 리디렉션을 수행 할 수 없습니다. 성공적인 파일 다운로드 후에 리디렉션을 수행해야하는 경우 클라이언트에게 파일 다운로드가 성공적으로 이루어 졌음을 어떻게 든 알게 될 것입니다. 이는 내가 아는 한 쿠키를 작성해야만 수행 할 수 있습니다.

이렇게 될 수있는 플러그인 코드를 사용하여,이 물건을 많이 단순화 내가 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(); 

자바 스크립트 : 코드의 더없이

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

내가 당신에게 완벽한 솔루션을 제공 할 수는 (012 봐 예를 들어)하지만 플러그인을 사용하는 것이 가장 쉽고 최선의 방법이라고 생각합니다.