ホームページ >バックエンド開発 >PHPチュートリアル >ユーザーによる簡単なダウンロードを実現するためにデータベースを使用する必要はありません。以下のコードですが、ファイルパスなどに問題はないので、専門家に原因を調べてください。

ユーザーによる簡単なダウンロードを実現するためにデータベースを使用する必要はありません。以下のコードですが、ファイルパスなどに問題はないので、専門家に原因を調べてください。

WBOY
WBOYオリジナル
2016-06-13 13:39:561286ブラウズ

ユーザー向けの簡易ダウンロードを実装する必要はありませんが、以下のようなコードですが、原因は専門家に聞いてください。 ファイルパス等に問題はありません。

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

が欠落していることがわかりました。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。