2009-12-18 90 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()调用中获得)不会反映浏览器在以后被压缩的实际内容大小。这导致浏览器等待更多的数据,这是永远不会到达..

编辑:值得注意的是,在我的情况下,我通过反向代理去的网站。