2009-12-18 86 views
1

我們有一個magento商業站點運行在運行magento的PHP 5.2.11的IIS 6.0服務器上。下載發票(PDF)沒有完成

每當用戶嘗試使用打印從管理面板將pdf下載到他們的計算機時,下載無法完成。我可以看到整個文件被下載到計算機,但瀏覽器仍然繼續說它正在下載。這意味着文件最終會以.part保存,用戶無法以pdf格式打開文件。如果我刪除由Firefox創建的.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

你有沒有嘗試明確調用退出;輸出pdf數據後。聽起來像一個IIS的東西。

+0

我在哪裏使用exit(); pdfinvoicesAction()從OrderController.php和Invoice.php文件中調用。 有一個正用於創建PDF的_prepareDownloadResponse函數。 是否有IIS設置? – ToughPal 2009-12-18 10:58:13

+0

不知道IIS設置,退出需要去_prepareDownloadResponse輸出到瀏覽器後(對不起,我的版本的magento沒有pdf發票,所以不能確切地說) – 2009-12-18 11:17:07

+0

謝謝馬克,我試過$ this後的exit() - > _ prepareDownloadResponse,現在下載不會發生。我想弄清楚放置exit()的位置。 – ToughPal 2009-12-18 11:21:49

2

我有完全相同的問題(Apache),我暫時通過關閉響應中的gzip壓縮來解決問題。我的猜測是,Magento報告的大小(它從PDF內容的strlen()調用中獲得)不會反映瀏覽器在以後被壓縮的實際內容大小。這導致瀏覽器等待更多的數據,這是永遠不會到達..

編輯:值得注意的是,在我的情況下,我通過反向代理去的網站。