PHP实现HTTP断点续传的方法


Posted in PHP onJune 17, 2015

本文实例讲述了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('+','%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);
}

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
用文本文件制作留言板提示(下)
Oct 09 PHP
深入理解PHP原理之Session Gc的一个小概率Notice
Apr 12 PHP
thinkphp 一个页面使用2次分页的实现方法
Jul 15 PHP
解析isset与is_null的区别
Aug 09 PHP
php函数指定默认值方法的小例子
Dec 04 PHP
CI框架装载器Loader.php源码分析
Nov 04 PHP
php HTML无刷新提交表单
Apr 05 PHP
php 使用html5实现多文件上传实例
Oct 24 PHP
yii2.0整合阿里云oss删除单个文件的方法
Sep 19 PHP
解决laravel-admin 自己新建页面里 js 需要刷新一次的问题
Oct 03 PHP
laravel实现一个上传图片的接口,并建立软链接,访问图片的方法
Oct 12 PHP
Laravel如何实现自动加载类
Oct 14 PHP
PHP实现在线阅读PDF文件的方法
Jun 17 #PHP
php源码分析之DZX1.5字符串截断函数cutstr用法
Jun 17 #PHP
php源码分析之DZX1.5加密解密函数authcode用法
Jun 17 #PHP
php源码分析之DZX1.5随机数函数random用法
Jun 17 #PHP
php正则替换处理HTML页面的方法
Jun 17 #PHP
PHP排序算法类实例
Jun 17 #PHP
php准确获取文件MIME类型的方法
Jun 17 #PHP
You might like
php与php MySQL 之间的关系
2009/07/17 PHP
基于PHP选项与信息函数的使用详解
2013/05/10 PHP
Laravel框架基础语法与知识点整理【模板变量、输出、include引入子视图等】
2019/12/03 PHP
js静态作用域的功能。
2006/12/25 Javascript
ExtJS[Desktop]实现图标换行示例代码
2013/11/17 Javascript
基于jQuery实现的向下滑动二级菜单效果代码
2015/08/31 Javascript
Ubuntu系统下Angularjs开发环境安装
2016/09/01 Javascript
详解微信第三方小程序代开发
2017/06/23 Javascript
详解webpack 如何集成第三方js库
2017/06/29 Javascript
jQuery中each循环的跳出和结束实例
2017/08/16 jQuery
vue实现文章内容过长点击阅读全文功能的实例
2017/12/28 Javascript
微信小程序如何像vue一样在动态绑定类名
2018/04/17 Javascript
夯基础之手撕javascript继承详解
2020/11/09 Javascript
[01:11:28]DOTA2-DPC中国联赛定级赛 RNG vs Phoenix BO3第一场 1月8日
2021/03/11 DOTA
利用打码兔和超人打码自封装的打码类分享
2014/03/16 Python
python单例模式实例分析
2015/04/08 Python
Python多线程和队列操作实例
2015/06/21 Python
python 对dataframe下面的值进行大规模赋值方法
2018/06/09 Python
Python实现的微信好友数据分析功能示例
2018/06/21 Python
破解安装Pycharm的方法
2018/10/19 Python
详解Python读取yaml文件多层菜单
2019/03/23 Python
Pandas 缺失数据处理的实现
2019/11/04 Python
python中with用法讲解
2020/02/07 Python
pyecharts绘制中国2020肺炎疫情地图的实例代码
2020/02/12 Python
使用python实现多维数据降维操作
2020/02/24 Python
Django-Scrapy生成后端json接口的方法示例
2020/10/06 Python
Diesel美国网上商店:意大利牛仔时装品牌
2020/12/10 全球购物
NHL官方在线商店:Shop.NHL.com
2020/05/01 全球购物
幼儿园教师奖惩制度
2014/02/01 职场文书
小学生手册家长评语
2014/04/16 职场文书
党支部反对四风思想汇报
2014/10/10 职场文书
数学教师求职信范文
2015/03/20 职场文书
小学推普周活动总结
2015/05/07 职场文书
优秀学生干部主要事迹材料
2015/11/04 职场文书
趣味运动会口号
2015/12/24 职场文书
你会写请假条吗?
2019/06/26 职场文书