0

PHP 強制ダウンロードに関する別の問題。それは機能していたので、何かをしましたが、今はそうではありません。

ここに行きます (私が受け入れるファイルの種類ごとに if ステートメントがありますが、1 つを表示するだけで問題を診断するのに十分なはずです)。

$string1 = 'home/myhost/aboveroot/reviews/';
$string2 = $username;
$string3 = '/';
$string4 = $filename;
$file= $string1.$string2.$string3.$string4;
$ext = strtolower (end(explode('.', $filename)));
//Finding MIME type
    if ($ext = pdf){
        header("Content-disposition: attachment; filename= '$filename'");
        header('Content-type: application/pdf');
        readfile('$file');

最終的に何が起こるかというと、正しいファイル名と正しい拡張子を持つファイルのダウンロードを強制することです。いかなる種類のファイル破損エラーも引き起こしません。ただし、ファイルを開くと、コンテンツが欠落しています。Word文書の場合、開くことを拒否します。テキスト ドキュメントの場合、テキストは次のように一連の php エラーに変更されます。


警告: readfile($file) [function.readfile]: ストリームを開くことができませんでした: No such file or directory in /home/myhost/public_html/wwww.mydomain.com/pagethatforceddownload.php68

次に、ヘッダーのある行ごとにこのエラーが発生します(条件を満たさないif句に含まれている場合でも:

警告: ヘッダー情報を変更できません - /home/myhost/public_html/wwww.mydomain.com/pagethatforceddownload 内の ( /home/myhost/public_html/wwww.mydomain.com/pagethatforceddownload.php:68 で開始された出力) によって既に送信されたヘッダー。69行目のphp

私は本当に迷っています。どんな助けでも大歓迎です。私はついに自分のサイトのすべてが機能し、BAM が動作するようになりました。私はこの巨大な問題を抱えていることに気付きました。

4

1 に答える 1

2

この行は間違っています:

if ($ext = pdf){

そのはず :

if ($ext == "pdf"){

そして、次を追加できます:

if($ext == "pdf" && file_exists($file)) {

有効なファイルを取得することを確認します。

そして、これも間違っています:

readfile('$file');

そのはず :

readfile($file);
于 2012-06-29T20:52:46.423 に答える