首页 > Web开发 > 详细

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

时间:2015-03-12 22:01:48      阅读:336      评论: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
*/

 

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

原文:http://www.cnblogs.com/phpfensi/p/4333777.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!