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生成EXCEL的东东
Oct 09 PHP
php+mysql写的简单留言本实例代码
Jul 25 PHP
php gd2 上传图片/文字水印/图片水印/等比例缩略图/实现代码
May 15 PHP
PHP中将字符串转化为整数(int) intval() printf() 性能测试
Mar 20 PHP
php对图像的各种处理函数代码小结
Jul 08 PHP
php实现把url转换迅雷thunder资源下载地址的方法
Nov 07 PHP
简单谈谈PHP中strlen 函数
Feb 27 PHP
PHP中类属性与类静态变量的访问方法示例
Jul 13 PHP
Laravel接收前端ajax传来的数据的实例代码
Jul 20 PHP
PHP whois查询类定义与用法示例
Apr 03 PHP
解决Laravel无法使用COOKIE和SESSION的问题
Oct 16 PHP
PHP设计模式(六)桥连模式Bridge实例详解【结构型】
May 02 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
完美解决dedecms中的[html][/html]和[code][/code]问题
2007/03/20 PHP
对text数据类型不支持代码页转换 从: 1252 到: 936
2011/04/23 PHP
php生成静态页面的简单示例
2014/04/17 PHP
phpMyAdmin安装并配置允许空密码登录
2015/07/04 PHP
javascript实例分享---具有立体效果的图片特效
2014/06/08 Javascript
jQuery中width()方法用法实例
2014/12/24 Javascript
js立即执行函数: (function ( ){})( ) 与 (function ( ){}( )) 有什么区别?
2015/11/18 Javascript
jQuery实现页面下拉100像素出现悬浮窗口的方法
2016/09/05 Javascript
浅谈jQuery中的eq()与DOM中element.[]的区别
2016/10/28 Javascript
自学实现angularjs依赖注入
2016/12/20 Javascript
jQuery延迟执行的实现方法
2016/12/21 Javascript
Vue.Js中的$watch()方法总结
2017/03/23 Javascript
vue货币过滤器的实现方法
2017/04/01 Javascript
JavaScript适配器模式详解
2017/10/19 Javascript
详谈DOM简介及节点、属性、查找节点的方法
2017/11/16 Javascript
React教程之封装一个Portal可复用组件的方法
2018/01/02 Javascript
微信小程序使用form表单获取输入框数据的实例代码
2018/05/17 Javascript
详解React中setState回调函数
2018/06/14 Javascript
pyqt4教程之实现windows窗口小示例分享
2014/03/07 Python
在Python的Django框架中更新数据库数据的方法
2015/07/17 Python
用python实现的线程池实例代码
2018/01/06 Python
pytorch 实现模型不同层设置不同的学习率方式
2020/01/06 Python
CSS3实现圆角、阴影、透明效果并兼容各大浏览器
2014/08/08 HTML / CSS
美国转售二手商品的电子商务平台:BLINQ
2018/12/13 全球购物
Bitiba意大利:在线宠物商店
2020/10/31 全球购物
大学生军训自我评价分享
2013/11/09 职场文书
幼儿园老师辞职信
2014/01/20 职场文书
幼儿园教师培训方案
2014/02/04 职场文书
捐献物资倡议书范文
2014/05/19 职场文书
学校爱国卫生月活动总结
2014/06/25 职场文书
廉政教育的心得体会
2014/09/01 职场文书
2014年德育工作总结
2014/11/20 职场文书
2015年文明创建工作总结
2015/04/30 职场文书
2015秋季开学典礼新闻稿
2015/07/17 职场文书
POST提交数据常见的四种方式
2022/01/18 HTML / CSS
Python实现自动玩连连看的脚本分享
2022/04/04 Python