本文实例讲述了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程序设计有所帮助。
本文地址:https://www.stayed.cn/item/19712
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我