欢迎您来到懒之才-站长的分享平台!   学会偷懒,并懒出境界是提高工作效率最有效的方法!
首页 > 经验分享 > PHP > 新写PHP HTTP断点续传类文件代码

新写PHP HTTP断点续传类文件代码

2018-06-23 439 收藏 0 赞一个 0 真差劲 0 去评论

一个支持断点续传的PHP文件下载类文件,调用方法简单,类代码简洁,可记忆上次的下载的节点,实现累积下载,类名称download,类代码如下:

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中下载时中文乱码问题
$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);
}
/**
  * 参数说明:
  * @param string $path: 文件路径
  * @param string $file: 文件名称
  * @return void
*/


一、推荐使用迅雷或快车等多线程下载软件下载本站资源。

二、未登录会员无法下载,登录后可获得更多便利功能,若未注册,请先注册。

三、如果服务器暂不能下载请稍后重试!总是不能下载,请点我报错 ,谢谢合作!

四、本站大部分资源是网上搜集或私下交流学习之用,任何涉及商业盈利目的均不得使用,否则产生的一切后果将由您自己承担!本站将不对任何资源负法律责任.如果您发现本站有部分资源侵害了您的权益,请速与我们联系,我们将尽快处理.

五、如有其他问题,请加网站设计交流群(点击这里查看交流群 )进行交流。

六、如需转载本站资源,请注明转载来自并附带链接

七、本站部分资源为加密压缩文件,统一解压密码为:www.aizhanzhe.com

大家评论