ホームページ >バックエンド開発 >PHPチュートリアル >php_PHPチュートリアルでダウンロードした空のjpgファイルの解決策

php_PHPチュートリアルでダウンロードした空のjpgファイルの解決策

WBOY
WBOYオリジナル
2016-07-13 10:54:391221ブラウズ

phpチュートリアルのダウンロードjpgファイルは空のソリューションです

JPG形式ファイル、クリックするとブラウザで開き、赤十字で表示されます

コードは次のとおりです:

$filetype = "画像/pjpeg";
header("コンテンツタイプ: {$filetype}");

header("有効期限: 0");
header("キャッシュ制御: 必須再検証、事後チェック=0、事前チェック=0");
header("プラグマ: public");

$file_content = file_get_contents($filepath);
エコー $file_content;
出る

まずは初期ファイルに問題がないか確認してください

1.echo $ファイルパス;

2. 出力ファイルのフルパスに従ってファイルを開きます。問題ありません。

オリジナルファイルの疑いを排除する

次に、ファイルの読み込み中に問題がないか確認します

1.$filetype = "アプリケーション/jpeg";

header("content-disposition:attachment; filename="{$headername}";");

ファイルの強制ダウンロード

ダウンロード後、ファイルサイズは元のファイルと同じであることがわかりましたが、開いた後はまだ空であり、ファイルが出力されるときに問題があると判断できます。

file_put_contents("d:aaa.jpg",file_get_contents($filepath)) を使用してファイルをサーバーに保存すると、保存されたファイルを開くことができます

この時、クライアントにファイルを出力する際のエンコードに何か問題があるのではないかと疑いました

しばらく悩んだ後、最終的に問題は解決されました。コードは次のとおりです。

header("コンテンツタイプ: {$filetype}");

header("有効期限: 0");

header("キャッシュ制御: 必須再検証、事後チェック=0、事前チェック=0");

header("プラグマ: public");
//ここにエンコード設定を追加します
header('コンテンツ転送エンコーディング: バイナリ');
// ここで最も重要なことは、出力バイトをクリアすることです
ob_clean();
//これは以下の 2 つの挿入行と同等であり、コードを節約できます
readfile($filepath);

//$file_content = file_get_contents($filepath);
// $file_content をエコーし​​ます

出る


ob_clean() の説明を添付します:

出力バッファをクリーン(消去)します

ob_clean() が .net の response.clear() と等しいことを理解しています;

http://www.bkjia.com/PHPjc/632310.html

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/632310.html技術記事 PHP チュートリアルのダウンロード jpg ファイルは空のソリューション jpg 形式です。クリックしてブラウザでファイルを開くと、次のように赤十字コードが表示されます。 $filetype = image/pjpeg header(content-type: {$filetype}...)
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。