发表于 2018-12-12 12:19:01

PHP 大文件下载(方式2 支持断点续传)

$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);

页: [1]
查看完整版本: PHP 大文件下载(方式2 支持断点续传)