亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

php實現的支持斷點續傳的文件下載類_0

2020-03-22 20:22:46
字體:
來源:轉載
供稿:網友
本文實例講述了php實現的支持斷點續傳的文件下載類及其用法,是非常實用的技巧。分享給大家供大家參考。具體方法如下:通常來說,php支持斷點續傳,主要依靠HTTP協議中 header HTTP_RANGE實現。HTTP斷點續傳原理:Http頭 Range、Content-Range()
HTTP頭中一般斷點下載時才用到Range和Content-Range實體頭,
Range用戶請求頭中,指定第一個字節的位置和最后一個字節的位置,如(Range:200-300)
Content-Range用于響應頭請求下載整個文件: GET /test.rar HTTP/1.1
Connection: close
Host: 116.1.219.219
Range: bytes=0-801 //一般請求下載整個文件是bytes=0- 或不用這個頭一般正?;貞篐TTP/1.1 200 OK
Content-Length: 801
Content-Type: application/octet-stream
Content-Range: bytes 0-800/801 //801:文件總大小FileDownload.html' target='_blank'>class.php類文件代碼如下: php /** php下載類,支持斷點續傳 * Date: 2013-06-30 * Author: test * Ver: 1.0 * Func: * download: 下載文件 * setSpeed: 設置下載速度 * getRange: 獲取header中Range class FileDownload{ // class start private $_speed = 512; // 下載速度 /** 下載 * @param String $file 要下載的文件路徑 * @param String $name 文件名稱,為空則與下載的文件名稱一樣 * @param boolean $reload 是否開啟斷點續傳 public function download($file, $name='', $reload=false){ if(file_exists($file)){ if($name==''){ $name = basename($file); $fp = fopen($file, 'rb'); $file_size = filesize($file); $ranges = $this- getRange($file_size); header('cache-control:public'); header('content-type:application/octet-stream'); header('content-disposition:attachment; filename='.$name); if($reload && $ranges!=null){ // 使用續傳 header('HTTP/1.1 206 Partial Content'); header('Accept-Ranges:bytes'); // 剩余長度 header(sprintf('content-length:%u',$ranges['end']-$ranges['start'])); // range信息 header(sprintf('content-range:bytes %s-%s/%s', $ranges['start'], $ranges['end'], $file_size)); // fp指針跳到斷點位置 fseek($fp, sprintf('%u', $ranges['start'])); }else{ header('HTTP/1.1 200 OK'); header('content-length:'.$file_size); while(!feof($fp)){ echo fread($fp, round($this- _speed*1024,0)); ob_flush(); //sleep(1); // 用于測試,減慢下載速度 ($fp!=null) && fclose($fp); }else{ return ''; /** 設置下載速度 * @param int $speed public function setSpeed($speed){ if(is_numeric($speed) && $speed 16 && $speed 4096){ $this- _speed = $speed; /** 獲取header range信息 * @param int $file_size 文件大小 * @return Array private function getRange($file_size){ if(isset($_SERVER['HTTP_RANGE']) && !empty($_SERVER['HTTP_RANGE'])){ $range = $_SERVER['HTTP_RANGE']; $range = preg_replace('/[/s|,].*/', '', $range); $range = explode('-', substr($range, 6)); if(count($range) 2){ $range[1] = $file_size; $range = array_combine(array('start','end'), $range); if(empty($range['start'])){ $range['start'] = 0; if(empty($range['end'])){ $range['end'] = $file_size; return $range; return null; } // class end
$flag = $obj- download($file, $name); //$flag = $obj- download($file, $name, true); // 斷點續傳 if(!$flag){ echo 'file not exists';
斷點續傳測試方法:使用linux wget命令去測試下載, wget -c -O file http://xxx1.先關閉斷點續傳$flag = $obj- download($file, $name);
test@ubuntu:~/Downloads$ wget -O test.rar http://demo.test.com/demo.php --2013-06-30 16:52:44-- http://demo.test.com/demo.php 正在解析主機 demo.test.com... 127.0.0.1 正在連接 demo.test.com|127.0.0.1|:80... 已連接。 已發出 HTTP 請求,正在等待回應... 200 OK 長度: 10445120 (10.0M) [application/octet-stream] 正在保存至: “test.rar” 30% [============================ ] 3,146,580 513K/s 估時 14s test@ubuntu:~/Downloads$ wget -c -O test.rar http://demo.test.com/demo.php --2013-06-30 16:52:57-- http://demo.test.com/demo.php 正在解析主機 demo.test.com... 127.0.0.1 正在連接 demo.test.com|127.0.0.1|:80... 已連接。 已發出 HTTP 請求,正在等待回應... 200 OK 長度: 10445120 (10.0M) [application/octet-stream] 正在保存至: “test.rar” 30% [============================ ] 3,146,580 515K/s 估時 14s 可以看到,wget -c不能斷點續傳2.開啟斷點續傳$flag = $obj- download($file, $name, true);
test@ubuntu:~/Downloads$ wget -O test.rar http://demo.test.com/demo.php --2013-06-30 16:53:19-- http://demo.test.com/demo.php 正在解析主機 demo.test.com... 127.0.0.1 正在連接 demo.test.com|127.0.0.1|:80... 已連接。 已發出 HTTP 請求,正在等待回應... 200 OK 長度: 10445120 (10.0M) [application/octet-stream] 正在保存至: “test.rar” 20% [================== ] 2,097,720 516K/s 估時 16s test@ubuntu:~/Downloads$ wget -c -O test.rar http://demo.test.com/demo.php --2013-06-30 16:53:31-- http://demo.test.com/demo.php 正在解析主機 demo.test.com... 127.0.0.1 正在連接 demo.test.com|127.0.0.1|:80... 已連接。 已發出 HTTP 請求,正在等待回應... 206 Partial Content 長度: 10445121 (10.0M),7822971 (7.5M) 字節剩余 [application/octet-stream] 正在保存至: “test.rar” 100%[++++++++++++++++++++++++========================================================================= ] 10,445,121 543K/s 花時 14s 2013-06-30 16:53:45 (543 KB/s) - 已保存 “test.rar” [10445121/10445121]) 可以看到會從斷點的位置(%20)開始下載。本文實例完整源碼可點擊此處本站下載。相信本文所述對大家的PHP程序設計有一定的借鑒價值。PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲综合大片69999| 久久精视频免费在线久久完整在线看| 久久夜精品va视频免费观看| 久久久久久久久久久人体| 精品少妇一区二区30p| 色婷婷久久一区二区| 国产亚洲视频中文字幕视频| 欧美老女人性视频| 在线观看日韩www视频免费| 日韩精品亚洲元码| 欧美华人在线视频| 日韩欧美在线视频日韩欧美在线视频| 日本精品久久久久久久| 国产噜噜噜噜噜久久久久久久久| 色综合天天综合网国产成人网| 国产精品久久99久久| 日韩电影中文字幕| 国产成人精品在线| 懂色aⅴ精品一区二区三区蜜月| 亚洲最新在线视频| 亚洲第一页自拍| 日韩欧美中文第一页| 国产美女精彩久久| 欧美日韩视频在线| 日韩在线激情视频| 欧美精品video| 欧美刺激性大交免费视频| 久久精品91久久久久久再现| 国产精品国产三级国产aⅴ浪潮| 亚洲欧美日韩在线一区| 中文字幕自拍vr一区二区三区| 日韩天堂在线视频| 亚洲精品视频免费在线观看| 91精品在线播放| 欧美猛少妇色xxxxx| 久久精品亚洲94久久精品| 亚洲黄色av网站| 一区二区欧美亚洲| 久久久久久免费精品| 97在线精品视频| 欧美成人激情在线| 国产精品盗摄久久久| 国产精品久久久久久久天堂| 欧美日韩视频在线| 欧美日韩福利在线观看| 亚洲免费福利视频| 欧美性猛交xxxx黑人| 亚洲国产精品va在线观看黑人| 国产ts人妖一区二区三区| 精品欧美一区二区三区| 久久精品国产亚洲精品2020| 国产精品高潮呻吟久久av黑人| 国产精品精品久久久久久| 日韩中文字幕在线播放| 亚洲最新视频在线| 91国内揄拍国内精品对白| 国产精品一区二区三区久久久| 久久视频中文字幕| 久久久久久亚洲| 日韩欧美福利视频| 最近的2019中文字幕免费一页| 一个人www欧美| 国产激情久久久久| 国产91露脸中文字幕在线| 美日韩在线视频| 亚洲黄色成人网| 欧美高清videos高潮hd| 国产一区二区三区日韩欧美| 久久全国免费视频| 91性高湖久久久久久久久_久久99| 亚洲国产精品嫩草影院久久| 日韩欧美成人免费视频| 国产精品美女在线| 日韩欧美国产激情| 影音先锋欧美在线资源| 国产一区二区三区免费视频| 欧美孕妇孕交黑巨大网站| 91精品久久久久久久久中文字幕| 国产丝袜一区二区三区免费视频| 国产欧美精品va在线观看| 国产精品夜间视频香蕉| 亚洲成人999| 5278欧美一区二区三区| 91久久久久久国产精品| 日本精品视频在线观看| 国产拍精品一二三| 日韩免费观看视频| 亚洲女在线观看| 成人精品aaaa网站| 久久在线免费视频| 国产精品稀缺呦系列在线| 国产不卡av在线免费观看| 亚洲国产欧美在线成人app| 欧美午夜激情视频| 日韩精品免费视频| 国产一区深夜福利| 日本aⅴ大伊香蕉精品视频| 久久久亚洲福利精品午夜| 日韩中文在线不卡| 久久久久免费精品国产| 欧美日韩中文字幕在线| 中文字幕在线日韩| 久久最新资源网| 国产精品久久视频| 久久久中文字幕| 精品丝袜一区二区三区| 欧美国产精品va在线观看| 精品视频在线播放| 久久青草精品视频免费观看| 欧美精品久久久久久久久| 91理论片午午论夜理片久久| 亚洲国产成人精品女人久久久| 在线观看久久久久久| 日韩中文字幕在线播放| 国产精品欧美日韩久久| 国内精品久久久| 日韩av在线网页| 亚洲福利视频网站| 亚洲性猛交xxxxwww| 精品国产一区二区三区久久狼5月| 最近更新的2019中文字幕| 国产在线98福利播放视频| 成人中文字幕在线观看| 久久久精品一区二区三区| 久久国产精品网站| 在线看福利67194| 亚洲色图15p| 成人444kkkk在线观看| 日韩中文字幕视频| 久久久久久久久久久av| 欧美老女人在线视频| 91九色蝌蚪国产| 亚洲毛片在线免费观看| 成人午夜高潮视频| 国产日韩欧美日韩大片| 亚洲欧美另类国产| 国产精品极品美女粉嫩高清在线| 亚洲国内高清视频| 最好看的2019的中文字幕视频| 亚洲成人中文字幕| 日韩精品在线视频观看| 日韩欧美亚洲综合| 亚洲精品在线观看www| 日韩有码片在线观看| 欧美性猛交丰臀xxxxx网站| 亚洲天堂网在线观看| 欧美黑人巨大xxx极品| 欧美大全免费观看电视剧大泉洋| 中文字幕不卡在线视频极品| 精品日韩视频在线观看| 亚洲欧美变态国产另类| 亚洲男人天堂2024| 国产精品入口免费视| 亚洲精品综合精品自拍| 亚洲肉体裸体xxxx137| 欧美激情影音先锋| 91经典在线视频| 日韩欧美精品免费在线| 欧美激情欧美激情在线五月| 亚洲一区二区免费| 精品国偷自产在线视频99| 92福利视频午夜1000合集在线观看| 成人网址在线观看| 九九热最新视频//这里只有精品|