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 相关文章推荐
asp和php下textarea提交大量数据发生丢失的解决方法
Jan 20 PHP
php chr() ord()中文截取乱码问题解决方法
Sep 08 PHP
php引用返回与取消引用的详解
Jun 08 PHP
浅析php中常量,变量的作用域和生存周期
Aug 10 PHP
PHP error_log()将错误信息写入一个文件(定义和用法)
Oct 25 PHP
php的慢速日志引起的Mysql错误问题分析
May 13 PHP
ThinkPHP自动完成中使用函数与回调方法实例
Nov 29 PHP
php+ajax实现无刷新的新闻留言系统
Dec 21 PHP
php采用session实现防止页面重复刷新
Dec 24 PHP
详解YII关联查询
Jan 10 PHP
PHP的Laravel框架中使用AdminLTE模板来编写网站后台界面
Mar 21 PHP
yii2带搜索功能的下拉框实例详解
May 12 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中实现记住密码自动登录的代码
2011/03/02 PHP
php浏览历史记录的方法
2015/03/10 PHP
phpStudy访问速度慢和启动失败的解决办法
2015/11/19 PHP
关于使用runtimeStyle属性问题讨论文章
2007/03/08 Javascript
心扬JS分页函数代码
2010/09/10 Javascript
javascript权威指南 学习笔记之变量作用域分享
2011/09/28 Javascript
jQuery实现的鼠标滑过弹出放大图片特效
2016/01/08 Javascript
深入理解vue路由的使用
2017/03/24 Javascript
Node.js简单入门前传
2017/08/21 Javascript
vue2使用keep-alive缓存多层列表页的方法
2018/09/21 Javascript
vue实现codemirror代码编辑器中的SQL代码格式化功能
2019/08/27 Javascript
vue.js中ref及$refs的使用方法解析
2019/10/08 Javascript
微信小程序实现滑动操作代码
2020/04/23 Javascript
逐行分析鸿蒙系统的 JavaScript 框架(推荐)
2020/09/17 Javascript
[01:32]TI珍贵瞬间系列(一)
2020/08/26 DOTA
python中反射用法实例
2015/03/27 Python
Python实现将xml导入至excel
2015/11/20 Python
Python中将字典转换为列表的方法
2016/09/21 Python
Python使用内置json模块解析json格式数据的方法
2017/07/20 Python
VSCode下好用的Python插件及配置
2018/04/06 Python
python爬虫简单的添加代理进行访问的实现代码
2019/04/04 Python
安装docker-compose的两种最简方法
2019/07/30 Python
详解Python文件修改的两种方式
2019/08/22 Python
python将图片转base64,实现前端显示
2020/01/09 Python
微信浏览器取消缓存的方法
2015/03/28 HTML / CSS
5分钟实现Canvas鼠标跟随动画背景
2019/11/18 HTML / CSS
信息专业学生学习的自我评价
2014/02/17 职场文书
创建文明学校实施方案
2014/03/11 职场文书
体育专业自荐书
2014/05/29 职场文书
安全责任书
2015/01/29 职场文书
2015年教学管理工作总结
2015/05/20 职场文书
职位证明模板
2015/06/23 职场文书
参加招聘会后的感想
2015/08/10 职场文书
2016年圣诞节活动总结范文
2016/04/01 职场文书
Pytorch中Softmax与LogSigmoid的对比分析
2021/06/05 Python
使用 CSS 构建强大且酷炫的粒子动画效果
2022/08/14 HTML / CSS