これはファイルをダウンロードするためのコードですが、ダウンロード後のファイルが常に空になるのはなぜですか?
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;
------解決策---------
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>