2014-07-07 5 views
0

PDF 보고서를 생성하고 다운로드하는 보고서 섹션이있는 ExtJS 4.2.1 응용 프로그램이 있습니다.파일을 다운로드 할 때 ExtJS show "download download"

지금 내 컨트롤러에서 나는 파일을 다운로드이 있습니다

onPrint: function() { 


     Ext.core.DomHelper.append(document.body, { 
      tag: 'iframe', 
      id: 'downloadIframe', 
      frameBorder: 0, 
      width: 0, 
      height: 0, 
      css: 'display:none;visibility:hidden;height:0px;', 
      src: '/api/report/GenerateReport' 
     }); 
} 
가 잘 작동하지만, 5 to 10 seconds to generate을 보고서도, 그래서 사용자 수도 click 여러 번 Print 버튼 그 때문에 생성되는 파일을 알지 못합니다. 파일이 다운로드 될 때까지 나는 마스크 "처리 다운로드"또는 뭔가를 보여줄 수있는 방법

은 그래서 UI를 차단합니다.

감사합니다.

답변

0

당신이 할 OnPrint (호출하기 전에, 속성

waitMsgTarget: true, 

하고 버튼의 핸들러 함수에에게해야 인쇄 버튼을 포함하는 부모 패널), 라인 추가 :

waitMsg: 'Processing download...', 

가 희망을 도움이됩니다. 아약스에게 파일을 생성하지만 서버에 일시적으로 저장되는 서버 방법을 사용하여

A. 전화 :

+0

Iframe을 사용하여 파일을 다운로드 할 때 작동하지 않습니다. 실제로 Chrome은 IFrame 이벤트에 문제가 있습니다. 그것은 결코 onload 이벤트를 발생시키지 않습니다. – VAAA

+0

해당 파일의 JS 코드를 공유 할 수 있습니까? 나는 fpdf 라이브러리를 사용했고, 제대로 작동했다. 내가 한 일을보고 싶다면 알려줘, 나는 그 파일들을 공유 할 것이다. –

0

내가 끝난 해결책은 다음과 같다. 여기에 대기 메시지가 표시됩니다.

파일 이름은 Guid입니다.

B. 일단 파일이 서버에 생성되면 클라이언트에 파일 이름으로 응답합니다.

C. 성공한 응답의 클라이언트는 방금 만든 파일 URL을 가리키는 src 속성 인 IFrame을 만듭니다.

D. 파일이 다운로드됩니다.