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下用GD生成生成缩略图的两个选择和区别
Apr 17 PHP
邮箱正则表达式实现代码(针对php)
Jun 21 PHP
PHP抓屏函数实现屏幕快照代码分享
Jan 02 PHP
Yii使用ajax验证显示错误messagebox的解决方法
Dec 03 PHP
ThinkPHP模版引擎之变量输出详解
Dec 05 PHP
php获取网页上所有链接的方法
Apr 03 PHP
php+ajax实现无刷新动态加载数据技术
Apr 28 PHP
PHP中foreach()用法汇总
Jul 02 PHP
php 使用curl模拟登录人人(校内)网的简单实例
Jun 06 PHP
一个简单的php MVC留言本实例代码(必看篇)
Sep 22 PHP
Yii2学习笔记之汉化yii设置表单的描述(属性标签attributeLabels)
Feb 07 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对象类型判断
2008/08/27 PHP
Yii2针对游客、用户防范规则和限制的解决方法分析
2016/10/08 PHP
网站被恶意镜像怎么办 php一段代码轻松搞定(全面版)
2018/10/23 PHP
Jquery 的扩展方法总结
2011/10/01 Javascript
常用的JavaScript WEB操作方法分享
2015/02/28 Javascript
JavaScript中setUTCMilliseconds()方法的使用详解
2015/06/12 Javascript
BootStrap和jQuery相结合实现可编辑表格
2016/04/21 Javascript
简单总结JavaScript中的String字符串类型
2016/05/26 Javascript
深入浅析JS的数组遍历方法(推荐)
2016/06/15 Javascript
jQuery实现的省市县三级联动菜单效果完整实例
2016/08/01 Javascript
JavaScript实战(原生range和自定义特效)简单实例
2016/08/21 Javascript
手机软键盘弹出时影响布局的解决方法
2016/12/15 Javascript
移动端利用H5实现压缩图片上传功能
2017/03/29 Javascript
无循环 JavaScript(map、reduce、filter和find)
2017/04/08 Javascript
vue.js利用defineProperty实现数据的双向绑定
2017/04/28 Javascript
浅谈layui 绑定form submit提交表单的注意事项
2019/10/25 Javascript
vue接口请求加密实例
2020/08/11 Javascript
[04:01]2014DOTA2国际邀请赛 TITAN告别Ohaiyo期望明年再战
2014/07/15 DOTA
[05:23]DOTA2-DPC中国联赛2月1日Recap集锦
2021/03/11 DOTA
Python中functools模块的常用函数解析
2016/06/30 Python
python批量读取txt文件为DataFrame的方法
2018/04/03 Python
python3+PyQt5实现柱状图
2018/04/24 Python
Anaconda2 5.2.0安装使用图文教程
2018/09/19 Python
Python告诉你木马程序的键盘记录原理
2019/02/02 Python
python实现QQ空间自动点赞功能
2019/04/09 Python
python爬虫刷访问量 2019 7月
2019/08/01 Python
Python中的延迟绑定原理详解
2019/10/11 Python
解决Pycharm中恢复被exclude的项目问题(pycharm source root)
2020/02/14 Python
英超联赛的首选足球:Mitre足球
2019/05/06 全球购物
后勤主管工作职责
2013/12/07 职场文书
党员干部一句话承诺
2014/05/30 职场文书
给老婆的检讨书1000字
2015/01/01 职场文书
罗马假日观后感
2015/06/08 职场文书
三年级作文之趣事作文
2019/11/04 职场文书
深入浅析React中diff算法
2021/05/19 Javascript
用Python创建简易网站图文教程
2021/06/11 Python