PHP-HTTP断点续传实现
2018-01-08 09:35
288 查看
<?php /** * PHP-HTTP断点续传实现 * @username 张高伟 * @param string $path: 文件所在路径 * @param string $file: 文件名 * @return void */ $file = '1.zip'; $file = 'counter.dat'; $size = filesize($file); $size2 = $size-1; $range = 0; if(isset($_SERVER['HTTP_RANGE'])) { //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("Content-type: video/mp4"); header('Accenpt-Ranges: bytes'); header('Content-Type: application/octet-stream'); header("Cache-control: public"); header("Pragma: public"); // 解决在IE中下载时中文乱码问题 $ua = $_SERVER['HTTP_USER_AGENT']; if(preg_match('/MSIE/',$ua)) { //表示正在使用 Internet Explorer。 $ie_filename = str_replace('+','%20',urlencode($file)); header ( "Content-Disposition: attachment; filename=$ie_filename;" ); } else { header ( "Content-Disposition: attachment; filename=$file;" ); } $fp = fopen($file,'rb+'); fseek($fp,$range); //fseek:在打开的文件中定位,该函数把文件指针从当前位置向前或向后移动到新的位置,新位置从文件头开始以字节数度量。成功则返回 0;否则返回 -1。注意,移动到 EOF 之后的位置不会产生错误。 while(!feof($fp)) { //feof:检测是否已到达文件末尾 (eof) set_time_limit(0); //控制运行时间 print(fread($fp,1024)); //读取文件(可安全用于二进制文件,第二个参数:规定要读取的最大字节数) ob_flush(); //刷新PHP自身的缓冲区 flush(); //刷新缓冲区的内容(严格来讲, 这个只有在PHP做为apache的Module(handler或者filter)安装的时候, 才有实际作用. 它是刷新WebServer(可以认为特指apache)的缓冲区.) } fclose($fp);
相关文章推荐
- PHP实现HTTP断点续传的方法
- PHP实现HTTP断点续传的方法
- 用PHP实现 HTTP断点续传、分块下载文件(Socket)
- HTTP 断点续传(PHP实现)
- 通过php实现支持断点续传的http proxy
- PHP实现HTTP断点续传的方法
- java通过http实现断点续传
- 用Java实现HTTP断点续传(3)
- 用Java实现断点续传(HTTP)
- 用 Java 实现断点续传 (HTTP)
- 用 Java 实现断点续传 (HTTP)(转)
- /* .Net/C#: 实现支持断点续传多线程下载的 Http Web 客户端工具类【转】
- PHP实现http与https的转化
- php之curl实现http与https请求的方法
- atitit.http get post的原理以及框架实现java php
- asp代码实现在线实时开通WEB及FTP http://www.nrcce.com/nrcce_bbs/viewthread.php?tid=650&highlight=
- 用Java实现断点续传(HTTP)
- HTTP服务器是如何实现对PHP的支持的?
- PHP实现HTTP防盗链
- php之curl实现http与https请求的方法