1

パラメータを受け取り、クライアントのブラウザにファイルをダウンロードするスクリプトがあります。ファイルは、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);
   }
}
4

1 に答える 1

0

ページのレンダリングで使用されるすべてのファイルをチェックして、php タグを閉じるか、php タグを開く前の空白を確認しました。

ただし、作成したカスタム アクション ヘルパーはチェックしていませんでした。このアクションでそれらを使用していなかったので、これをチェックすることさえ考えませんでした.

これらのアクション ヘルパーには php タグを閉じる機能があり、それらを削除して問題を修正しました。

助けてくれてありがとう!ロニー

于 2013-07-08T10:00:07.883 に答える