ホームページ > バックエンド開発 > PHPチュートリアル > PHP はブレークポイントでダウンロードを再開するメソッドを実装します。PHP はブレークポイントで再開可能なダウンロードを実装します_PHP チュートリアル

PHP はブレークポイントでダウンロードを再開するメソッドを実装します。PHP はブレークポイントで再開可能なダウンロードを実装します_PHP チュートリアル

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

PHP はブレークポイントでダウンロードを再開するメソッドを実装し、PHP はブレークポイントで再開可能なダウンロードを実装します

この記事の例では、PHP でダウンロードを再開するブレークポイントを実装する方法を説明します。参考のためにみんなで共有してください。

具体的な実装コードは次のとおりです:

コードをコピーします コードは次のとおりです:
/*
* PHP ダウンロード ブレークポイントの再開
*/
関数 dl_file_resume($file){

// ファイルが存在するかどうかを確認します
If (!is_file($file)) { die("404 ファイルが見つかりません!"); }
$len = filesize($file);//ファイルサイズを取得します
$filename =basename($file);//ファイル名を取得します
$file_extension = strto lower(substr(strrchr($filename,"."),1));//ファイル拡張子を取得します

//拡張子に基づいて出力ブラウザ形式を指定します
switch( $file_extension ) {
case "exe": $ctype="application/octet-stream"; case "zip": $ctype="application/zip"; case "mp3": $ctype="audio/mpeg"; ケース "mpg":$ctype="ビデオ/mpeg"; ケース "avi": $ctype="video/x-msvideo"; デフォルト: $ctype="application/force-download"; }

//ヘッダーの書き込みを開始します
header("キャッシュコントロール:"); header("キャッシュ制御: パブリック");
//出力ブラウザ形式を設定します
header("コンテンツタイプ: $ctype"); If (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE")) {//IE ブラウザの場合
# ファイル名に複数のピリオド/複数のドットが含まれる IE ファイル名のバグの回避策
# ファイル名に角括弧を追加します - 例: setup.abc.exe は setup[1].abc.exe になります
$iefilename = preg_replace('/./', '%2e', $filename, substr_count($filename, '.') - 1); header("Content-Disposition:attachment; filename="$iefilename""); } その他 {
header("Content-Disposition:attachment; filename="$filename""); }
header("受け入れ範囲: バイト");
$size=ファイルサイズ($file); // $_SERVER['HTTP_RANGE'] パラメータがある場合
If(isset($_SERVER['HTTP_RANGE'])) {
/* ------------------------
Range ヘッダー フィールド Range ヘッダー フィールドは、エンティティの 1 つ以上のサブ範囲を要求できます。たとえば、最初の 500 バイトを表します: bytes=0-499 は 2 番目の 500 バイトを表します: bytes=500-999 は最後の 500 バイトを表します: bytes=-500 は 500 バイト以降の範囲を表します: bytes=500- 最初と最後のbytes: bytes=0-0,-1 同時に複数の範囲を指定します: bytes=500-600,601-999 ただし、無条件 GET に Range リクエスト ヘッダーが含まれる場合、サーバーはこのリクエスト ヘッダーを無視できます。コード 200 (OK) の代わりにコード 206 (PartialContent) が返されます。
-------------------------*/

// ブレークポイントと $_SERVER['HTTP_RANGE'] の値の後に再度接続します bytes=4390912-

list($a, $range)=explode("=",$_SERVER['HTTP_RANGE']); //「はい」の場合、不足している部分をダウンロードします
str_replace($range, "-", $range);//この文は何ですか? 。 。 。
$size2=$size-1;//ファイル内の合計バイト数
$new_length=$size2-$range;//次回のダウンロードの長さを取得する
header("HTTP/1.1 206 部分的なコンテンツ"); header("Content-Length: $new_length");// 合計の長さを入力
header("Content-Range: bytes $range$size2/$size");//Content-Range: バイト 4908618-4988927/4988928 95% の確率で
} else {//最初の接続
$size2=$size-1; header("Content-Range: バイト 0-$size2/$size"); //Content-Range: バイト 0-4988927/4988928
header("Content-Length: ".$size);//出力の全長
}
// ファイルを開く
$fp=fopen("$file","rb"); // ポインターの位置を設定します
fseek($fp,$range);//アンリアル出力
While(!feof($fp)){
//ファイルの最大実行時間を設定します
set_time_limit(0); print(fread($fp,1024*8));//出力ファイル
flush();//出力バッファ
ob_flush(); }
fclose($fp); 出る
}

dl_file_resume("1.zip");//同じディレクトリ内の 1.zip ファイル

//-----------------------------------------------

//ブレークポイントで再開できるファイルのダウンロードはサポートされていません。

//-----------------------------------------------

ダウンファイル("1.zip");
関数 downFile($sFilePath)
{
If(file_exists($sFilePath)){
$aFilePath=explode("/",str_replace("\","/",$sFilePath),$sFilePath); $sFileName=$aFilePath[count($aFilePath)-1]; $nFileSize=ファイルサイズ ($sFilePath); header ("Content-Disposition: 添付ファイル; ファイル名 = . $sFileName); header ("Content-Length: " . $nFileSize); ヘッダー ("コンテンツタイプ: application/octet-stream"); readfile($sFilePath); }
それ以外
{
echo("ファイルが存在しません!"); }
}
?>


この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。




http://www.bkjia.com/PHPjc/910607.html

www.bkjia.com

tru​​e
http://www.bkjia.com/PHPjc/910607.html

技術記事

PHP でダウンロードのブレークポイントを再開する方法を実装します。 PHP でブレークポイントを使用して再開する方法を説明します。 この記事では、PHP でダウンロードの再開を実装する方法について説明します。参考のためにみんなで共有してください。 具体的な実装コードは次のとおりです:...

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート