本文实例讲述了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程序设计有所帮助。
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:)!