Вы можете попробовать.
public function init()
{
$this->_helper->contextSwitch()
->addContext('file'))
->addActionContext('download', 'file')
->setAutoJsonSerialization(false)
->initContext();
}
// ...
public function downloadAction()
{
if ($this->_helper->contextSwitch()->getCurrentContext() == 'file') {
$this->getResponse()
->setHeader('Content-type', 'application/pdf; charset=binary')
->setHeader('Content-Disposition', 'attachment; filename="10.pdf"')
->setHeader('Content-length', filesize(APPLICATION_PATH . "/../public/pdf/10.pdf"))
->setHeader('Cache-control', 'private');
readfile(APPLICATION_PATH . "/../public/pdf/10.pdf");
$this->getResponse()->sendResponse();
} else {
throw new Zend_Controller_Action_Exception('File not found', 404);
}
}
Необходимо также установить параметр format в file в качестве переменной POST или GET на странице вызова, например.
<a href="http://yourdomain.com/path/to/controller/format/file">
Если ваш файл находится в вашей папке с общедоступными документами, вы можете просто связать его напрямую.
<a href="http://yourdomain.com/pdf/10.pdf">
и не беспокойтесь с приведенным выше кодом PHP / ZF.
Надеюсь, это поможет.
С уважением
Garry