2009-12-18 7 views
1

Magento를 실행중인 PHP 5.2.11을 사용하는 IIS 6.0 서버에서 실행되는 magento commerce 사이트가 있습니다.인보이스 다운로드 (PDF)가 완료되지 않았습니다.

사용자가 인쇄물을 사용하여 관리자 패널에서 자신의 컴퓨터로 pdf를 다운로드하려고 할 때마다 다운로드가 완료되지 않습니다. 전체 파일이 컴퓨터에 다운로드되었지만 브라우저가 계속 다운로드 중임을 계속 알 수 있습니다. 즉, 파일이 .part 파일로 끝나고 사용자가 pdf 파일을 열 수 없음을 의미합니다. 파이어 폭스가 만든 .part 확장을 제거하면 pdf를 올바르게 볼 수 있습니다. 즉, 서버에서 전체 데이터를 브라우저로 보내지 만 다운로드가 종료되지 않습니다. PDF로

HTTP/1.x 200 OK 
Cache-Control: must-revalidate, post-check=0, pre-check=0 
Pragma: public 
Content-Length: 1456781 
Content-Type: application/pdf 
Content-Encoding: gzip 
Expires: Thu, 19 Nov 1981 08:52:00 GMT 
Last-Modified: Fri, 18 Dec 2009 10:23:37 +0000 
Vary: Accept-Encoding 
Server: Microsoft-IIS/6.0 
X-Powered-By: ASP.NET, PHP/5.2.11 
Content-Disposition: attachment; filename=invoice2009-12-18_10-23-37.pdf 
Date: Fri, 18 Dec 2009 10:23:37 GMT 

나는 그것을 통해 전체 파일을 전송 한 후 연결을 종료되지 함께 할 수있는 뭔가 추측을 다운로드하기 시작하면서

는 응답에 아래의 헤더를 참조하십시오? 도와주세요!

감사합니다.

답변

1

exit를 명시 적으로 시도 했습니까? pdf 데이터를 출력 한 후 IIS 같은 것 같습니다.

+0

어디에서 exit()를 사용해야합니까? pdfinvoicesAction()은 OrderController.php 및 Invoice.php 파일에서 호출됩니다. PDF를 만드는 데 사용되는 _prepareDownloadResponse 함수가 있습니다. IIS 설정이 있습니까? – ToughPal

+0

IIS 설정에 대한 아이디어가 없으므로 브라우저에 _prepareDownloadResponse 출력을 보내야합니다. (미안 해요 내 magento 버전은 pdf 인보이스가 없으므로 정확하게 말할 수 없습니다) –

+0

감사 표시, $ this 다음에 exit()를 시도했습니다. -> _ prepareDownloadResponse 이제 다운로드가 발생하지 않습니다. exit()를 배치 할 위치를 정확히 파악하려고합니다. – ToughPal

2

나는 똑같은 문제 (아파치)를 가지고 있었는데, 나는 일시적으로 응답의 gzip 압축을 꺼서 문제를 해결했다. 내 생각 엔 Magento (PDF 내용의 strlen() 호출에서 가져 오는)가 브라우저에보고 한 크기가 브라우저가 나중에 압축되는 실제 내용 크기를 반영하지 않는다고 생각합니다. 이것은 브라우저가 도착하지 않을 더 많은 데이터를 기다리는 결과를 낳습니다 ..

편집 : 내 경우에는 역방향 프록시를 통해 사이트에 간다고 언급 할 가치가 있습니다.

관련 문제