尝试在 Zend 中实现 gzip 编码的人们提出了很多问题——我需要做相反的事情!
我有一个扩展标准 Zend_Controller_Action 的控制器。我的 downloadAction 有一个 PDF 文件作为它的响应正文。这很好用,只是客户端浏览器无法正确识别下载的文件。
下载的文件被浏览器下载标识为“Zip 存档”。保存并双击后,它会以 PDF 格式正确打开。响应标头显示 Content-Encoding:gzip,所以我认为这可能是罪魁祸首。
我行动的核心是:
$this->_helper->layout()->disableLayout();
$this->_helper->viewRenderer->setNoRender(true);
if ($fd = fopen($pdfpath.$pdf->Filename,'r'))
{
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="summary.PDF"');
while(!feof($fd))
{
$buffer = fread($fd, 2048);
echo $buffer;
}
fclose($fd);
}
在这篇文章之前还有一些其他代码,但它没有比填充变量更令人兴奋的了。
我将如何仅为此响应禁用 Content-Encoding:gzip 标头,或者如果这是错误的一端(使用压缩会很好,但不会以牺牲用户体验为代价),我该如何获得一旦压缩被反转,客户端正确识别下载的文件?