ホームページ > バックエンド開発 > PHPチュートリアル > なぜこのコードが失敗するのか聞きたいです

なぜこのコードが失敗するのか聞きたいです

WBOY
リリース: 2016-06-23 14:28:23
オリジナル
840 人が閲覧しました

<?php	session_start();	$user = $_SESSION['login_name'];	$filename = $_GET["f"];	$file = "../upload/".$user."/".$filename;	if (file_exists($file)) {	    header('Content-Description: File Transfer');	    header('Content-Type: application/octet-stream');	    header('Content-Disposition: attachment; filename="'.basename($file).'"');	    header('Content-Transfer-Encoding: binary');	    header('Expires: 0');	    header('Cache-Control: must-revalidate');	    header('Pragma: public');	    header('Content-Length: ' . filesize($file));	    ob_clean();	    flush();	    readfile($file);	    exit;	}?>
ログイン後にコピー


ダウンロードすると、ダウンロードボックスがポップアップせずに、大量の文字化けが直接印刷されます。 (readfile は画面に直接読み取られるのでしょうか?)
ありがとうございます!


ディスカッションへの返信(解決策)

文字化けしているファイルは中国語の名前ですか?
header("Content-type: text/html; charset=GB2312");
または
header("Content-type: text/html; charset=GBK"); を追加します

スクリーンショットを投稿してください。

明らかに文法上の間違いです

スクリーンショットを投稿してください!

明らかに文法ミスです

ごめんなさい、写真を投稿するのを忘れていました。
ここをクリックしてください。その中で、New Document(2).txt のダウンロードリンクをクリックしました。先ほど投稿したコード内の php にジャンプします:

その結果、ブラウザーはテキストをダウンロードする代わりにテキストを開きます。
理由を聞いてもいいですか...

ob_clean();flush();
ログイン後にコピー
ログイン後にコピー

これら 2 つを削除して見てください

ob_clean();flush();
ログイン後にコピー
ログイン後にコピー

これら 2 つを削除して見てください



ありがとうございます!結局、を2行目から書き始めたせいでエラーが報告されてしまいました
細かいところは油断してないようですね!

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート