ホームページ > バックエンド開発 > PHPチュートリアル > これはファイルをダウンロードするためのコードです。ダウンロード後にファイルが常に空になるのはなぜですか?

これはファイルをダウンロードするためのコードです。ダウンロード後にファイルが常に空になるのはなぜですか?

WBOY
リリース: 2016-06-13 13:29:58
オリジナル
1270 人が閲覧しました

これはファイルをダウンロードするためのコードですが、ダウンロード後のファイルが常に空になるのはなぜですか?
function down_file($file_name,$file_sub_dir){
$file_name=iconv("utf-8 " ,"gb2312",$file_name);
$file_path=$_SERVER['DOCUMENT_ROOT'].$file_sub_dir.$file_name;
//ファイルを開きます
if(!file_exists($file_path)){
echo "ファイルが存在しません、申し訳ありません";
return;
}
$fp=fopen($file_path,"r");
// ファイルのサイズを取得しますダウンロードされる
$file_size=filesize($file_path);
//返されたファイルを設定します
header("Content-type:application/octet-stream");
//ファイルの単位を設定します返されたファイル、ここに Bytes
header("Accept-Range:bytes");
//返されたファイルのサイズを設定します
header("Accept-Length:$file_size");
//クライアントポップアップの設定 ダイアログボックスに表示されるファイル名
header("Content-Disposition:attachment;filename=$file_name");
//データをクライアントに送り返す(バッチで送り返す) )
//各センドバックを設定します データのサイズ
$buffer=1024;
//ダウンロードの安全性を確保するためにファイルのバイト読み取りカウンターを設定
$file_count=0;
while(( !feof($fp) ) && ($file_size - $file_count > 0)){
$file_data=fread($fp,$file_size);
$file_count += $buffer;
}
fclose($fp );
}

down_file("Sunset.jpg","/filedown/down/");
?>

------ 解決策 --------------------
エコー ファイルのコンテンツがありません
------解決策---------
$file_data=fread($fp,$file_size ) ;
ファイルからデータを読み取るだけです
が、データを出力しません
echo $file_data;


------解決策---------

PHP コード

while((!feof($fp)) && ($file_size - $file_count > 0)){
  $file_data=fread($fp,$file_size);
  $file_count += $buffer;
  }
[b]print($file_data);[/b]
…
<br><font color="#e78608">------解決策---------</font><br>$file_data=fread($fp,$file_size ) ;<br> $file_count += $buffer;<br><br>これは何ですか? $buffer は fread によって返される長さではありません。これを追加するとどうなるでしょうか。 +strlen($file_data) <div class="clear"></div>
ログイン後にコピー
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート