PHP實(shí)現(xiàn)HTTP斷點(diǎn)續(xù)傳的方法
本文實(shí)例講述了PHP實(shí)現(xiàn)HTTP斷點(diǎn)續(xù)傳的方法。分享給大家供大家參考。具體實(shí)現(xiàn)方法如下:
<?php
/**
* PHP-HTTP斷點(diǎn)續(xù)傳實(shí)現(xiàn)
* @param string $path: 文件所在路徑
* @param string $file: 文件名
* @return void
*/
function download($path,$file) {
$real = $path.'/'.$file;
if(!file_exists($real)) {
return false;
}
$size = filesize($real);
$size2 = $size-1;
$range = 0;
if(isset($_SERVER['HTTP_RANGE'])) {
header('HTTP /1.1 206 Partial Content');
$range = str_replace('=','-',$_SERVER['HTTP_RANGE']);
$range = explode('-',$range);
$range = trim($range[1]);
header('Content-Length:'.$size);
header('Content-Range: bytes '.$range.'-'.$size2.'/'.$size);
} else {
header('Content-Length:'.$size);
header('Content-Range: bytes 0-'.$size2.'/'.$size);
}
header('Accenpt-Ranges: bytes');
header('application/octet-stream');
header("Cache-control: public");
header("Pragma: public");
//解決在IE中下載時(shí)中文亂碼問題
$ua = $_SERVER['HTTP_USER_AGENT'];
if(preg_match('/MSIE/',$ua)) {
$ie_filename = str_replace('+','%20',urlencode($file));
header('Content-Dispositon:attachment; filename='.$ie_filename);
} else {
header('Content-Dispositon:attachment; filename='.$file);
}
$fp = fopen($real,'rb+');
fseek($fp,$range);
while(!feof($fp)) {
set_time_limit(0);
print(fread($fp,1024));
flush();
ob_flush();
}
fclose($fp);
}
希望本文所述對(duì)大家的php程序設(shè)計(jì)有所幫助。
- php斷點(diǎn)續(xù)傳之如何分割合并文件
- 解決PHP超大文件下載,斷點(diǎn)續(xù)傳下載的方法詳解
- php實(shí)現(xiàn)的支持?jǐn)帱c(diǎn)續(xù)傳的文件下載類
- php下載遠(yuǎn)程文件類(支持?jǐn)帱c(diǎn)續(xù)傳)
- php斷點(diǎn)續(xù)傳之文件分割合并詳解
- 關(guān)于php支持分塊與斷點(diǎn)續(xù)傳文件下載功能代碼
- php+resumablejs實(shí)現(xiàn)的分塊上傳 斷點(diǎn)續(xù)傳功能示例
- php支持?jǐn)帱c(diǎn)續(xù)傳、分塊下載的類
- PHP簡(jiǎn)單實(shí)現(xiàn)斷點(diǎn)續(xù)傳下載的方法
- PHP實(shí)現(xiàn)斷點(diǎn)續(xù)傳亂序合并文件的方法
相關(guān)文章
PHP獲取redis里不存在的6位隨機(jī)數(shù)應(yīng)用示例【設(shè)置24小時(shí)過時(shí)】
這篇文章主要介紹了PHP獲取redis里不存在的6位隨機(jī)數(shù)的方法,可設(shè)置24小時(shí)過時(shí)限制,涉及php字符串及數(shù)據(jù)庫相關(guān)操作技巧,需要的朋友可以參考下2017-06-06
Laravel中使用FormRequest進(jìn)行表單驗(yàn)證方法及問題匯總
Laravel 5.0 帶來了FormRequests, 這是一種特殊的類型, 用于在提交表單時(shí)進(jìn)行數(shù)據(jù)的檢查和驗(yàn)證. 每個(gè)FormRequest類至少包含一個(gè)rules()方法, 這個(gè)方法返回一組驗(yàn)證規(guī)則. 除此之外還必須包含一個(gè)authorize()方法, 該方法返回一個(gè)布爾值, 代表是否允許用戶執(zhí)行本次請(qǐng)求.2016-06-06
PHP+Ajax檢測(cè)用戶名或郵件注冊(cè)時(shí)是否已經(jīng)存在實(shí)例教程
這篇文章主要介紹了PHP+Ajax檢測(cè)用戶名或郵件注冊(cè)時(shí)是否已經(jīng)存在實(shí)例教程,是非常常見的一個(gè)重要功能,常用于論壇注冊(cè)部分或會(huì)員注冊(cè)部分,需要的朋友可以參考下2014-08-08
PHP遍歷某個(gè)目錄下的所有文件和子文件夾的實(shí)現(xiàn)代碼
本篇文章是對(duì)PHP遍歷某個(gè)目錄下的所有文件和子文件夾的實(shí)現(xiàn)代碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
PHP實(shí)現(xiàn)自動(dòng)識(shí)別原編碼并對(duì)字符串進(jìn)行編碼轉(zhuǎn)換的方法
這篇文章主要介紹了PHP實(shí)現(xiàn)自動(dòng)識(shí)別原編碼并對(duì)字符串進(jìn)行編碼轉(zhuǎn)換的方法,涉及php針對(duì)編碼的識(shí)別、轉(zhuǎn)換及數(shù)組的遍歷等相關(guān)操作技巧,需要的朋友可以參考下2016-07-07
簡(jiǎn)單的移動(dòng)設(shè)備檢測(cè)PHP腳本代碼
簡(jiǎn)單的移動(dòng)設(shè)備檢測(cè)PHP腳本代碼,需要的朋友可以參考下。2011-02-02
PHP處理數(shù)組和XML之間的互相轉(zhuǎn)換
這篇文章主要介紹了如何使用PHP處理數(shù)組和XML之間的互相轉(zhuǎn)換,詳細(xì)介紹了PHP將XML轉(zhuǎn)換成數(shù)組,PHP將數(shù)組轉(zhuǎn)換成XML的方法,感興趣的小伙伴們可以參考一下2016-06-06

