PHP のダウンロードの問題、ダウンロード後にファイルの内容が空になり、画像のプレビューが表示されない

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

a.php と b.php の 2 つのファイルがあります
a.php のリンクをクリックしてファイルのダウンロードを開始します: コードは次のとおりです

これは a.php です

<?php $file_dir = "D:/files";$file_name = $row[1]; //这是从数据库中查找出来的echo "<a href='./b.php?file_dir=" . $file_dir . "&file_name=" . $file_name . "'>" . $row[2] . "</a>"; //点击这个链接,下载的文件名是对的,就是文件里没有内容,如果是图片,图片没有预览?>
ログイン後にコピー


これは b の完全なコードです.php
<?php	$file_name = $_GET['file_name'];   //文件名	$file_dir  = $_GET['file_dir'];      //文件路径		if(!file_exists($file_dir.$file_name)){		 echo "找不到 [" . $file_dir.$file_name . "] 文件";		 exit;	}else{		 $file=fopen($file_dir.$file_name,"r");			Header("Content-type: application/octet-stream");		Header("Accept-Ranges:bytes");		Header("Accept-Length:".filesize($file_dir.$file_name));		Header("Content-Disposition: attachment; filename=".$file_name);	}?>
ログイン後にコピー


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

a.php では、$file_dir = "D:/files";
次に、b.php の $file_dir.$file_name にパス文字がありません

あなたphp では $file=fopen($file_dir.$file_name,"r"); のみがファイルを開きますが、 $file=fopen($file_dir. $file_name,"r"); 開いたファイルが画像の場合、画像データは正しく読み込まれません
バイナリ モードで開く必要があります: $file=fopen($file_dir.$file_name,"r b");

a.php では、$file_dir = "D: /files";

次に、b.php の $file_dir.$file_name にはパス文字がありません


$file=fopen($file_dir.$file_name," のみです) b.php で r"); を実行してファイルを開きますが、ファイルの内容は出力されません

$file=fopen($file_dir.$file_name,"r"); で開いたファイルが画像の場合、画像データは正しく読み込まれません
バイナリモードで開く必要があります: $ file=fopen($file_dir.$file_name,"r b");

理解していますが、これに変更しましたが、結果は依然としてコードは次のとおりです

<?php	$file_name = $_GET['file_name'];   //文件名	$file_dir  = $_GET['file_dir'];      //文件路径为当前目录		if(!file_exists($file_dir.$file_name)){		 echo "找不到 [" . $file_dir.$file_name . "] 文件";		 exit;	}else{        $file=fopen($file_dir.$file_name,"rb");	readfile($file);             Header("Content-type: application/octet-stream");        Header("Accept-Ranges:bytes");        Header("Accept-Length:".filesize($file_dir.$file_name));        Header("Content-Disposition: attachment; filename=".$file_name);	ob_clean(); 	flush();	exit; ?>
ログイン後にコピー


おっと、コード内でフォントの色を変更することはできません。再

<?php    $file_name = $_GET['file_name'];   //文件名    $file_dir  = $_GET['file_dir'];      //文件路径为当前目录         if(!file_exists($file_dir.$file_name)){         echo "找不到 [" . $file_dir.$file_name . "] 文件";         exit;    }else{        $file=fopen($file_dir.$file_name,"rb");        readfile($file);              Header("Content-type: application/octet-stream");        Header("Accept-Ranges:bytes");        Header("Accept-Length:".filesize($file_dir.$file_name));        Header("Content-Disposition: attachment; filename=".$file_name);        ob_clean();         flush();        exit;?>
ログイン後にコピー


この投稿は、2013-06-08 16:08:01 に xuzuning によって最終的に編集されました。

    }else{        $file = $file_dir.$file_name;        Header("Content-type: application/octet-stream");        Header("Accept-Ranges:bytes");        Header("Accept-Length:".filesize($file));        Header("Content-Disposition: attachment; filename=".$file_name);        readfile($file);    }
ログイン後にコピー

まず第一に、モデレーターに感謝したいと思います。次に、共有する必要があります。 圧縮ファイル内のファイルをダウンロードしました。コードは次のとおりです。難しくない

れー

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