我有一个项目,它简单地将文件存储在服务器上。当有人想下载文件时,我必须通过一个中间控制器(Zend 框架)传递请求,为文件提供一些保护。
当有人请求该文件时,该文件被下载到客户端浏览器,但是,在我的所有测试中,该文件总是损坏(尽管它的字节大小是正确的)。有人可以告诉我我在这里做错了什么吗?
public function downloadAction() {
$this->_helper->layout->disableLayout();
$this->_helper->viewRenderer->setNoRender(true);
$files = new Application_Model_DbTable_Files();
$file = $files->getFileForDownload($this->_getParam('id'), Zend_Auth::getInstance()->getIdentity()->id);
$config = Zend_Registry::get('config');
$this->_helper->layout->disableLayout();
$this->_helper->viewRenderer->setNoRender();
if (file_exists($config['mindful']['path'] . $file)) {
$this->getResponse()->setHeader('Content-type', 'application/octet-stream');
$this->getResponse()->setHeader('Content-Disposition', 'inline; filename=' . basename($file), false);
$this->getResponse()->setBody(readfile($config['mindful']['path'] . $file));
}
}
如您所见,我已经使用 Zend 方法以及标准 PHP 进行了尝试。这两个都给了我相同的结果。
在此先感谢您的帮助!
瑞克