サーバーにファイルを単純に保存するプロジェクトがあります。誰かがファイルをダウンロードしたい場合、中間コントローラー (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 の両方で試してみました。これらはどちらも同じ結果をもたらします。
助けてくれてありがとう!
リック