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 中英文语言转换类
Sep 07 PHP
浅析php插件 HTMLPurifier HTML解析器
Jul 01 PHP
解决Codeigniter不能上传rar和zip压缩包问题
Mar 07 PHP
php使用parse_url和parse_str解析URL
Feb 22 PHP
PHP单例模式详细介绍
Jul 01 PHP
php远程下载类分享
Apr 13 PHP
php微信开发接入
Aug 27 PHP
thinkPHP5分页功能实现方法分析
Oct 25 PHP
thinkphp 中的volist标签在ajax操作中的特殊性(推荐)
Jan 15 PHP
Laravel 默认邮箱登录改成用户名登录的实现方法
Aug 12 PHP
Thinkphp5框架中引入Markdown编辑器操作示例
Jun 03 PHP
PHP 实现重载
Mar 09 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
1982年日本摄影师镜头下的中国孩子 那无忧无虑的童年
2020/03/12 杂记
转PHP手册及PHP编程标准
2006/12/17 PHP
php查询及多条件查询
2017/02/26 PHP
laravel解决迁移文件一次删除创建字段报错的问题
2019/10/24 PHP
js判断IE6/IE7/FF的代码[XMLHttpRequest]
2011/02/16 Javascript
如何让页面在打开时自动刷新一次让图片全部显示
2012/12/17 Javascript
网页中返回顶部代码(多种方法)另附注释说明
2013/04/24 Javascript
jquery链式操作的正确使用方法
2014/01/06 Javascript
jQuery实现的支持IE的html滑动条
2015/03/16 Javascript
JQuery页面地址处理插件jqURL详解
2015/05/03 Javascript
JQuery实现带排序功能的权限选择实例
2015/05/18 Javascript
javascript生成不重复的随机数
2015/07/17 Javascript
跟我学习javascript的隐式强制转换
2015/11/16 Javascript
bootstrap和jQuery.Gantt的css冲突 如何解决
2016/05/29 Javascript
详解vue.js数据传递以及数据分发slot
2018/01/20 Javascript
微信小程序实现循环动画效果
2018/07/16 Javascript
微信小程序学习笔记之目录结构、基本配置图文详解
2019/03/28 Javascript
前端天气插件tpwidget使用方法详解
2019/06/24 Javascript
vue页面加载时的进度条功能(实例代码)
2020/01/13 Javascript
Python内置的字符串处理函数详细整理(覆盖日常所用)
2014/08/19 Python
python爬虫headers设置后无效的解决方法
2017/10/21 Python
python爬取个性签名的方法
2018/06/17 Python
Django2.1集成xadmin管理后台所遇到的错误集锦(填坑)
2018/12/20 Python
python 实现得到当前时间偏移day天后的日期方法
2018/12/31 Python
python安装scipy的方法步骤
2019/06/26 Python
python获取栅格点和面值的实现
2020/03/10 Python
阻止移动设备(手机、pad)浏览器双击放大网页的方法
2014/06/03 HTML / CSS
娇韵诗Clarins意大利官方网站:法国天然护肤品牌
2020/03/11 全球购物
园林设计师自荐信
2013/11/18 职场文书
影视广告专业求职信
2014/09/02 职场文书
三方股份合作协议书
2014/10/13 职场文书
学校领导班子成员查摆问题及整改措施
2014/10/28 职场文书
安全员岗位职责
2015/02/10 职场文书
2015年感恩母亲节活动方案
2015/05/04 职场文书
重阳节简报
2015/07/20 职场文书
CAD实训总结范文
2015/08/03 职场文书