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 相关文章推荐
给php新手谈谈我的学习心得
Feb 25 PHP
解析PHP跳出循环的方法以及continue、break、exit的区别介绍
Jul 01 PHP
PHP session文件独占锁引起阻塞问题解决方法
May 12 PHP
WIFI万能钥匙密码查询接口实例
Sep 28 PHP
PHP实现基于mysqli的Model基类完整实例
Apr 08 PHP
php简单实现短网址(短链)还原的方法(测试可用)
May 09 PHP
PHP中Trait及其应用详解
Feb 14 PHP
php利用云片网实现短信验证码功能的示例代码
Nov 18 PHP
PHP实现数组转JSon和JSon转数组的方法示例
Jun 14 PHP
PHP按符号截取字符串的指定部分的实现方法
Sep 10 PHP
PHP实现随机发扑克牌
Apr 22 PHP
PHP 实现base64编码文件上传出现问题详解
Sep 01 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
ADODB结合SMARTY使用~超级强
2006/11/25 PHP
解析php根据ip查询所在地区(非常有用,赶集网就用到)
2013/07/01 PHP
PHP上传文件时自动分配路径的方法
2015/01/09 PHP
PHP经典算法集锦【经典收藏】
2016/09/14 PHP
PHP仿tp实现mvc框架基本设计思路与实现方法分析
2018/05/23 PHP
Laravel 错误提示本地化的实现
2019/10/22 PHP
会自动逐行上升的文本框
2006/06/30 Javascript
一些相见恨晚的 JavaScript 技巧
2010/04/25 Javascript
基于jquery实现的上传图片及图片大小验证、图片预览效果代码
2011/04/12 Javascript
了解了这些才能开始发挥jQuery的威力
2013/10/10 Javascript
javascript HTML5文件上传FileReader API
2020/03/27 Javascript
Bootstrap编写一个在当前网页弹出可关闭的对话框 非弹窗
2016/06/30 Javascript
Google 地图API资料整理及详细介绍
2016/08/06 Javascript
JavaScript获取URL参数的方法之一
2017/03/24 Javascript
如何使用Bootstrap创建表单
2017/03/29 Javascript
微信小程序实现选项卡功能
2020/06/19 Javascript
JS实现遍历不规则多维数组的方法
2018/03/21 Javascript
在vue里使用codemirror遇到的问题
2018/11/01 Javascript
浅谈JavaScript中的“!!”作用
2020/08/03 Javascript
js重写alert事件(避免alert弹框标题出现网址)
2020/12/04 Javascript
python中遍历文件的3个方法
2014/09/02 Python
python 爬虫 批量获取代理ip的实例代码
2018/05/22 Python
Python读取英文文件并记录每个单词出现次数后降序输出示例
2018/06/28 Python
Python字符串大小写转换拼接删除空白
2019/09/19 Python
python-numpy-指数分布实例详解
2019/12/07 Python
关于python scrapy中添加cookie踩坑记录
2020/11/17 Python
python中添加模块导入路径的方法
2021/02/03 Python
Html5获取高德地图定位天气的方法
2019/12/26 HTML / CSS
支票、地址标签、包装纸和慰问卡:Current Catalog
2018/01/30 全球购物
德国拖鞋网站:German Slippers
2019/11/08 全球购物
《一件运动衫》教学反思
2014/02/19 职场文书
硕士生工作推荐信
2014/03/07 职场文书
年度安全生产目标责任书
2014/07/23 职场文书
学习优秀党员杨宗兴先进事迹材料思想汇报
2014/09/14 职场文书
个人对照检查材料思想汇报(四风问题)
2014/09/25 职场文书
2016年习总书记讲话学习心得体会
2016/01/20 职场文书