パラメータを受け取り、クライアントのブラウザにファイルをダウンロードするスクリプトがあります。ファイルは、docent ルートの下でアクセス可能なフォルダーにありません
私のスクリプトがpdfの作業を正常に実行するが、単語のdocentはそうではありません。
表示記号をオンにしてnotepad ++でファイルを調べたところ、pdfとドキュメントの両方の上部に、notepad ++によるLFを含む2行があります(Adobe Readerの方が寛容なようです)。
考えられることはすべてチェックしました。出力する前にトリムにファイルを渡そうとしました。php タグを開く前に空白がないことを確認し、すべての要素をループする配列としてファイルを作成し、「\ n」が含まれている場合は最初の 2 つをエコーしないようにしました。
これはApacheのセットアップの問題でしょうか?
スクリプト例:
<?php
class TrainingDatabase_IndexController extends Zend_Controller_Action
{
public function downloadAction()
{
$this->view->layout()->disableLayout();
$this->_helper->viewRenderer->setNoRender(true);
// Get filepath and decode it from get param
$filepath = urldecode( $this->_request->getParam('directory') );
// Return the basename for save as filename
$filename = basename($filepath);
// Set the headers
header('Content-Disposition: attachment; filename="' . $filename . '"' );
header('Content-Description: File Transfer');
header('Content-Transfer-Encoding: binary');
header('Content-Type: application/octet-stream');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Expires: 0');
header('Content-Length: '.filesize($filepath));
// Make sure nothing is left in the browser
ob_clean();
flush();
// Output the file
readfile($filepath);
}
}