このファイル ダウンロードの例は非常に詳細であり、header 関数と while fread 関数を組み合わせてファイルをセグメントで読み出し、それをクライアントに送信します。これは標準的なファイル ダウンロードの例とみなすことができます。
PHP ファイルのダウンロードの小さな例
/*=============================================== ======
$FileName はファイル名であり、渡す必要があります
$FilePath はファイル パスです。オプションで、相対パスまたは絶対パスを指定できます
。
パスは英語とデータのみで構成でき、中国語を含めることはできません
ご質問がある場合は、ブロガーに連絡して指摘してください
================================================= ====*/
コードは次のとおりです |
コードをコピー |
header("コンテンツタイプ: text/html;charset=utf-8");
if(strlen($FileName)<=3){echo "ダウンロードに失敗しました: ダウンロードしたファイル情報が正しくありません";return;}
$FileName=iconv("utf-8","gb2312",$FileName);//中国語の文字化けを防ぐためにファイル名の形式を変換します
//パスの決定を開始します
if(!is_null($FilePath)&&strlen($FilePath)>1){
if(substr($FilePath,0,1)=='/'){//絶対パスかどうかを判断します
$FilePath=$_SERVER['DOCUMENT_ROOT'].$FilePath;
}
if(substr($FilePath,-1)!="/"){//末尾が / かどうかを確認します
$FilePath=$FilePath.'/';
}
if(is_numeric(strpos($FilePath,":")))//絶対パスかどうかを確認します
$FilePath=str_replace("/","",$FilePath);
}
}elseif(strlen($FilePath)==1&&$FilePath!="/"){
$FilePath=$FilePath."/";
}その他{
$ファイルパス="";
}
if(!file_exists($FilePath.$FileName)){
echo "ダウンロードに失敗しました: ダウンロードするファイルが見つかりませんでした";
}
/*===============================================
ダウンロード関連のヘッダー情報を送信します
=================================================* /
header("Content-type: application/octet-stream");
header("Accept-Ranges: bytes"); //バイトサイズに応じて返す
header("Accept-Length: $FileSize");//ファイルサイズを返す
header("Content-Disposition:attachment; filename=".$FileName);//ここではクライアントのポップアップダイアログボックス、対応するファイル名
/*===============================================
関連アイテムのダウンロードを開始します
=================================================* /
$FileSize=ファイルサイズ($FilePath.$FileName);
$File=fopen($FilePath.$FileName,"r");//ファイルを開きます
$FileBuff=512;
while($FileSize>=0){
$FileSize-=$FileBuff;
エコー fread($File,$FileBuff);
}
fclose($File);
}
?>
|
まとめ
このダウンロード例は中国語の名前もサポートしており、ファイルの先頭で UFT8 エンコード変換が実行されます。
http://www.bkjia.com/PHPjc/633123.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/633123.html技術記事このファイルダウンロードの例は非常に詳細で、header 関数と while fread 関数を組み合わせてファイルをセグメント単位で読み出し、それをクライアントに送信します。