PHP ファイルのダウンロードの小さな例_PHP チュートリアル

WBOY
リリース: 2016-07-13 10:44:09
オリジナル
1184 人が閲覧しました

このファイル ダウンロードの例は非常に詳細であり、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 エンコード変換が実行されます。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/633123.html技術記事このファイルダウンロードの例は非常に詳細で、header 関数と while fread 関数を組み合わせてファイルをセグメント単位で読み出し、それをクライアントに送信します。
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート