PHP实现HTTP断点续传的方法
来源:互联网 发布:程序员改bug 编辑:程序博客网 时间:2024/06/05 04:09
<?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);
}
阅读全文
0 0
- PHP实现HTTP断点续传下载的方法
- PHP实现HTTP断点续传的方法
- PHP 实现断点续传的原理和方法
- HTTP 断点续传(PHP实现)
- HTTP 断点续传(PHP实现)
- 通过php实现支持断点续传的http proxy
- Java实现HTTP的断点续传
- HTTP实现断点续传的方式
- JAVA断点续传实现方法代码(HTTP)
- JAVA断点续传实现方法代码(HTTP)
- PHP断点续传-HTTP
- JAVA如何实现HTTP的断点续传
- JAVA如何实现HTTP的断点续传
- JAVA如何实现HTTP的断点续传
- Android平台HTTP断点续传的实现
- 实现HTTP断点续传
- Java 实现断点续传 (HTTP)
- HTTP断点续传实现
- ios开发 Could not signal service com.apple.WebKit.WebContent: 113
- eclipse快捷键整理
- 单例模式
- ionic cordova andoid环境配置
- 运算符重载 编程题#2(Coursera 程序设计与算法 专项课程3 C++程序设计;重载:& operator-)
- PHP实现HTTP断点续传的方法
- 密码输入框显示为文字
- poj 2828 Buy Tickets
- gcc编译文件出错
- Java 设计模式-建造者模式(Builder)
- iPhone设备分辨率及尺寸
- First_Blog
- MVP+Rxjava+Retrofit的使用
- IDEA debug 项目启动异常: address localhost:1082 is already in use