当前位置:学者斋 >

计算机 >php语言 >

PHP实现HTTP断点续传的方法

PHP实现HTTP断点续传的方法

PHP是一种通用开源脚本语言。本文实例讲述了PHP实现HTTP断点续传的方法。分享给大家供大家参考。

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('+','',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 Http 断点续传
  • 文章版权属于文章作者所有,转载请注明 https://xuezhezhai.com/jsj/php/0lm1o5.html