php语言 百分网手机站

PHP实现HTTP断点续传的方法

时间:2020-09-13 10:56:40 php语言 我要投稿

PHP实现HTTP断点续传的方法

  PHP是一种通用开源脚本语言。本文实例讲述了PHP实现HTTP断点续传的方法。分享给大家供大家参考。

  具体实现方法如下:

  <?php

  /**

  * PHP-HTTP断点续传实现

  * @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中下载时中文乱码问题

  $ua = $_SERVER['HTTP_USER_AGENT'];

  if(preg_match('/MSIE/',$ua)) {

  $ie_filename = str_replace('+','',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);

  }


【PHP实现HTTP断点续传的方法】相关文章:

php页面缓存实现方法09-20

PHP多线程的实现方法09-21

PHP实现多线程的方法技巧10-01

PHP实现同步远程Mysql的方法09-16

PHP中读取大文件实现方法08-27

Linux下实现断点续传的原理介绍08-13

PHP中读取大文件实现方法详解09-23

php实现快速排序的三种方法09-17

php实现图片局部打马赛克的方法08-18