婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > php實(shí)現(xiàn)斷點(diǎn)續(xù)傳大文件示例代碼

php實(shí)現(xiàn)斷點(diǎn)續(xù)傳大文件示例代碼

熱門標(biāo)簽:菏澤語音外呼系統(tǒng)運(yùn)營商 如何在世界地圖標(biāo)注 梧州市機(jī)器人外呼系統(tǒng)怎么樣 天客通地圖標(biāo)注 廈門400電話辦理選易號網(wǎng) 臨沂crm外呼系統(tǒng)平臺 公司外呼系統(tǒng)中心 電子地圖標(biāo)注怎么修改 地圖標(biāo)注符號樣式有

一、斷點(diǎn)續(xù)傳原理

所謂斷點(diǎn)續(xù)傳,也就是要從文件已經(jīng)下載的地方開始繼續(xù)下載。在以前版本的 HTTP 協(xié)議是不支持?jǐn)帱c(diǎn)的,HTTP/1.1 開始就支持了。一般斷點(diǎn)下載時(shí)才用到 Range 和 Content-Range 實(shí)體頭。

不使用斷點(diǎn)續(xù)傳

get /down.zip http/1.1
accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-
excel, application/msword, application/vnd.ms-powerpoint, */*
accept-language: zh-cn
accept-encoding: gzip, deflate
user-agent: mozilla/4.0 (compatible; msie 5.01; windows nt 5.0)
connection: keep-alive

 服務(wù)器收到請求后,按要求尋找請求的文件,提取文件的信息,然后返回給瀏覽器,返回信息如下:

HTTP/1.1 200 Ok
content-length=106786028
accept-ranges=bytes
date=mon, 30 apr 2001 12:56:11 gmt
etag=w/"02ca57e173c11:95b"
content-type=application/octet-stream
server=microsoft-iis/5.0
last-modified=mon, 30 apr 2001 12:56:11 gmt

使用斷點(diǎn)續(xù)傳

GET /down.zip HTTP/1.0
User-Agent: NetFox
RANGE: bytes=2000070-
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2

多了這么一行Range: bytes=2000070-

這一行的意思就是告訴服務(wù)器down.zip這個文件從2000070字節(jié)開始傳,前面的字節(jié)不用傳了。
Range的完整格式是:

Range: bytes=startOffset-targetOffset/sum [表示從startOffset讀取,一直讀取到targetOffset位置,讀取總數(shù)為sum直接]
 
Range: bytes=startOffset-targetOffset [字節(jié)總數(shù)也可以去掉]

服務(wù)器收到這個請求以后,返回的信息如下:

HTTP/1.1 206 Partial Content
content-length=106786028
content-range=bytes 2000070-106786027/106786028
date=mon, 30 apr 2001 12:55:20 gmt
etag=w/"02ca57e173c11:95b"
content-type=application/octet-stream
server=microsoft-iis/5.0
last-modified=mon, 30 apr 2001 12:55:20 gmt

和前面服務(wù)器返回的信息比較一下,就會發(fā)現(xiàn)增加了一行:

Content-Range=bytes 2000070-106786027/106786028

返回的代碼也改為206了,而不再是200了。

HTTP/1.1 206 Partial Content

知道了以上原理,就可以進(jìn)行斷點(diǎn)續(xù)傳的編程了。

二、PHP實(shí)現(xiàn)

/** php下載類,支持?jǐn)帱c(diǎn)續(xù)傳
 * download: 下載文件
 * setSpeed: 設(shè)置下載速度
 * getRange: 獲取header中Range
 */
 
class FileDownload{
 
 /** 下載
 * @param String $file 要下載的文件路徑
 * @param String $name 文件名稱,為空則與下載的文件名稱一樣
 * @param boolean $reload 是否開啟斷點(diǎn)續(xù)傳
 */
 public function download($file, $name='', $reload=false){
 $fp = @fopen($file, 'rb');
 if($fp){
 if($name==''){
 $name = basename($file);
 }
 $header_array = get_headers($file, true);
 //var_dump($header_array);die;
 // 下載本地文件,獲取文件大小
 if (!$header_array) {
 $file_size = filesize($file);
 } else {
 $file_size = $header_array['Content-Length'];
 }
 $ranges = $this->getRange($file_size);
 $ua = $_SERVER["HTTP_USER_AGENT"];//判斷是什么類型瀏覽器
 header('cache-control:public');
 header('content-type:application/octet-stream'); 
 
 $encoded_filename = urlencode($name);
 $encoded_filename = str_replace("+", "%20", $encoded_filename);
 
 //解決下載文件名亂碼
 if (preg_match("/MSIE/", $ua) || preg_match("/Trident/", $ua) ){ 
 header('Content-Disposition: attachment; filename="' .$encoded_filename . '"');
 } else if (preg_match("/Firefox/", $ua)) {
 header('Content-Disposition: attachment; filename*="utf8\''' . $name . '"');
 }else if (preg_match("/Chrome/", $ua)) {
 header('Content-Disposition: attachment; filename="' . $encoded_filename . '"');
 } else {
 header('Content-Disposition: attachment; filename="' . $name . '"');
 }
 //header('Content-Disposition: attachment; filename="' . $name . '"');
 
 if($reload  $ranges!=null){ // 使用續(xù)傳
 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));
 //file_put_contents('test.log',sprintf('content-length:%u',$ranges['end']-$ranges['start']),FILE_APPEND);
 // fp指針跳到斷點(diǎn)位置
 fseek($fp, sprintf('%u', $ranges['start']));
 }else{
 file_put_contents('test.log','2222',FILE_APPEND);
 header('HTTP/1.1 200 OK');
 header('content-length:'.$file_size);
 }
 
 while(!feof($fp)){
 //echo fread($fp, round($this->_speed*1024,0));
 //echo fread($fp, $file_size);
 echo fread($fp, 4096);
 ob_flush();
 }
 
 ($fp!=null)  fclose($fp);
 }else{
 return '';
 }
 }
 
 /** 設(shè)置下載速度
 * @param int $speed
 */
 public function setSpeed($speed){
 if(is_numeric($speed)  $speed>16  $speed4096){
 $this->_speed = $speed;
 }
 }
 
 /** 獲取header range信息
 * @param int $file_size 文件大小
 * @return Array
 */
 private function getRange($file_size){
 //file_put_contents('range.log', json_encode($_SERVER), FILE_APPEND);
 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;
 }
}
 
$obj = new FileDownload();
$obj->download('http://down.golaravel.com/laravel/laravel-master.zip','', true);

以上就是php實(shí)現(xiàn)斷點(diǎn)續(xù)傳大文件示例代碼的詳細(xì)內(nèi)容,更多關(guān)于php 斷點(diǎn)續(xù)傳大文件的資料請關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • PHP大文件分割分片上傳實(shí)現(xiàn)代碼
  • PHP大文件及斷點(diǎn)續(xù)傳下載實(shí)現(xiàn)代碼
  • PHP下載大文件失敗并限制下載速度的實(shí)例代碼
  • PHP超低內(nèi)存遍歷目錄文件和讀取超大文件的方法
  • 詳解PHP多個進(jìn)程配合redis的有序集合實(shí)現(xiàn)大文件去重
  • PHP如何通過表單直接提交大文件詳解
  • PHP大文件分片上傳的實(shí)現(xiàn)方法
  • php下載遠(yuǎn)程大文件(獲取遠(yuǎn)程文件大小)的實(shí)例
  • 詳解PHP如何讀取大文件

標(biāo)簽:雞西 瀘州 迪慶 貴陽 綿陽 郴州 白城 黃石

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《php實(shí)現(xiàn)斷點(diǎn)續(xù)傳大文件示例代碼》,本文關(guān)鍵詞  php,實(shí)現(xiàn),斷點(diǎn),續(xù)傳,大,文件,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《php實(shí)現(xiàn)斷點(diǎn)續(xù)傳大文件示例代碼》相關(guān)的同類信息!
  • 本頁收集關(guān)于php實(shí)現(xiàn)斷點(diǎn)續(xù)傳大文件示例代碼的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产专区欧美精品| 日韩精品一区二区三区视频播放 | 26uuu另类欧美| 亚洲一卡二卡三卡四卡无卡久久| 韩国v欧美v日本v亚洲v| 欧美区一区二区三区| 免费av成人在线| 国产视频911| av电影在线观看完整版一区二区| 国产精品久久久久影院亚瑟| 日本久久电影网| 日韩精品成人一区二区在线| 精品国产制服丝袜高跟| 国产aⅴ综合色| 亚洲一区二区三区四区在线观看| 在线视频一区二区免费| 久久er99精品| 专区另类欧美日韩| 91精品久久久久久久99蜜桃| 国产精品一二三四| 一区二区久久久| 337p亚洲精品色噜噜| 国产69精品久久久久毛片| 一区二区日韩av| 国产日产欧美精品一区二区三区| 日本道精品一区二区三区| 免费看精品久久片| 亚洲人成网站影音先锋播放| 欧美一区二区日韩| 丁香六月综合激情| 婷婷久久综合九色综合伊人色| 久久看人人爽人人| 欧美日本乱大交xxxxx| 成人免费观看视频| 奇米888四色在线精品| 国产精品国产成人国产三级| 欧美一级片免费看| 91蜜桃免费观看视频| 国内成人精品2018免费看| 一区二区三区久久久| 久久久亚洲精华液精华液精华液| 91麻豆自制传媒国产之光| 久久精品理论片| 亚洲国产一区二区视频| 婷婷一区二区三区| 国产精品第四页| 欧美tickling网站挠脚心| 欧美自拍偷拍一区| 99国产一区二区三精品乱码| 国产一区二区三区四区五区美女| 性久久久久久久久久久久| 亚洲色图另类专区| 亚洲国产精品激情在线观看| 欧美xxxx在线观看| 精品日韩一区二区| 日韩亚洲国产中文字幕欧美| 在线观看国产日韩| 色香色香欲天天天影视综合网| 成人免费视频免费观看| 精品亚洲aⅴ乱码一区二区三区| 一区二区三区四区蜜桃| 亚洲男人天堂av| 中文字幕中文字幕在线一区| 国产精品三级久久久久三级| 久久久99精品免费观看不卡| 26uuu色噜噜精品一区| 2021国产精品久久精品| 亚洲精品在线一区二区| 日韩欧美电影一二三| 91精品国产日韩91久久久久久| 欧美日韩在线不卡| 欧美精品色一区二区三区| 欧美精品99久久久**| 欧美精品久久久久久久多人混战 | 午夜国产精品一区| 亚洲bdsm女犯bdsm网站| 日韩av电影免费观看高清完整版 | 91影视在线播放| 99re亚洲国产精品| 欧美在线影院一区二区| 91精品国产一区二区三区蜜臀| 日韩欧美的一区| 国产精品国产三级国产普通话99| 亚洲三级在线免费观看| 99精品视频在线观看| 99久久久国产精品| 欧美四级电影网| 欧美三级午夜理伦三级中视频| 欧美老肥妇做.爰bbww| 日韩一区二区电影| 国产精品麻豆视频| 日韩专区欧美专区| 粉嫩一区二区三区在线看| 色一区在线观看| www久久久久| 一区二区三区中文在线| 美脚の诱脚舐め脚责91| 不卡影院免费观看| 欧美日韩高清一区| 久久久久久99精品| 亚洲最新视频在线观看| 久久99精品久久久久久国产越南| 高清国产一区二区三区| 欧洲精品视频在线观看| 日韩精品中文字幕在线不卡尤物 | 91国偷自产一区二区开放时间| 欧美在线一区二区三区| 久久久久久久av麻豆果冻| 午夜久久久影院| 成人av动漫网站| 日韩视频一区二区三区在线播放 | 99久久婷婷国产精品综合| 日韩一级视频免费观看在线| 一区二区在线免费| 国产成人精品亚洲777人妖| 9191成人精品久久| 一区二区三区免费观看| av网站免费线看精品| 久久久久国产成人精品亚洲午夜| 亚洲成在人线免费| 91蜜桃免费观看视频| 中文字幕久久午夜不卡| 精品一区二区在线看| 欧美精选在线播放| 亚洲一区二区三区四区五区黄| 国产一区二区三区在线观看精品| 91精品国产高清一区二区三区| 亚洲视频一区二区在线| 国产一区二区三区四区五区入口| 日韩一区二区三区免费观看| 成人一二三区视频| 日韩精品中文字幕在线不卡尤物| 三级在线观看一区二区| 欧洲亚洲国产日韩| 日韩毛片一二三区| 成人午夜看片网址| 国产精品伦一区| 99久久99久久久精品齐齐| 国产精品久久久久久久午夜片| 丁香另类激情小说| 中文字幕一区二区三区在线不卡| 成人午夜激情片| 亚洲欧美自拍偷拍色图| www.亚洲色图| 亚洲精品视频免费观看| 欧美午夜电影在线播放| 亚洲一二三四在线观看| 欧美日韩亚州综合| 视频一区欧美精品| 精品毛片乱码1区2区3区| 日韩av高清在线观看| 欧美一区二区美女| 精品在线你懂的| 国产精品视频第一区| 成人aa视频在线观看| 亚洲自拍另类综合| 欧美日韩三级在线| 婷婷夜色潮精品综合在线| 精品视频在线免费| 亚洲电影一级片| 538prom精品视频线放| 激情综合色丁香一区二区| 国产日本亚洲高清| 国产一区二区三区久久久| 久久久久综合网| 91女厕偷拍女厕偷拍高清| 亚洲电影一区二区| www久久久久| 欧洲一区在线电影| 国产美女av一区二区三区| 亚洲人吸女人奶水| 欧美mv和日韩mv国产网站| 99久久综合狠狠综合久久| 琪琪久久久久日韩精品| 一区在线观看免费| 日韩一区二区三区三四区视频在线观看 | 国产一区二区三区在线观看精品| 亚洲欧美电影院| 久久综合av免费| 欧美在线观看视频一区二区| 久久99精品一区二区三区| 日韩一区日韩二区| 久久综合久久综合久久综合| 不卡av电影在线播放| 久久99精品久久久| 中文字幕不卡在线| 欧美日韩另类一区| 色狠狠av一区二区三区| 久久精品国产99| 视频精品一区二区| 一卡二卡三卡日韩欧美| 国产亚洲综合性久久久影院| 欧美裸体一区二区三区| 99天天综合性| 国产a级毛片一区| 精品亚洲aⅴ乱码一区二区三区| 亚洲sss视频在线视频| 亚洲视频网在线直播| 久久久国产一区二区三区四区小说| 欧美高清视频www夜色资源网|