ホームページ >バックエンド開発 >PHPチュートリアル >ユーザーによる簡単なダウンロードを実現するためにデータベースを使用する必要はありません。以下のコードですが、ファイルパスなどに問題はないので、専門家に原因を調べてください。
ユーザー向けの簡易ダウンロードを実装する必要はありませんが、以下のようなコードですが、原因は専門家に聞いてください。 ファイルパス等に問題はありません。
function down_file($file_name,$file_sub_dir){
//文字化けを防ぐには関数 iconv
$ を使用します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);
//ダウンロードを制限しますサイズを 10M にします
if ($file_size>10*1021*1024){
echo " ";
return;
}
//返されたファイル属性のヘッダーは、ブラウザに
header("Content-type:application/octet-stream") をダウンロードするように指示します。 🎜> //バイト サイズに従って Return
header("Accept-Ranges:bytes");
//ファイル サイズを返す
header("Accept-Length:$file_size");
//ここでクライアントは、対応するファイル名
header("Content-Dispositon:attachment; filename=".$file_name);
//データをクライアントに送信する
というダイアログ ボックスを表示します。 $buffer=1024;
//安全にダウンロードするには、ファイル読み取りカウンターを自分で作成した方が良いです
$file_count=0;
//この文はファイルが終了したかどうかを判断するために使用されます
while(!feof($fp) && ($ file_size-$file_count>0) ){
$file_data=fread($fp,$buffer);
//バイト数をカウントする読み込まれました
$file_count+=$buffer;
//データの一部をブラウザに返します
echo $file_data;
}
//ファイルを閉じます
fclose($fp);
}
? >
----- -解決策------------------
詳しく見てみると、
header("Content-Disposition:attachment; filename=". $file_name);
に i