PHP实现HTTP断点续传的方法
本文实例讲述了PHP实现HTTP断点续传的方法。分享给大家供大家参考。具体实现方法如下:
<?php /** *PHP-HTTP断点续传实现 *@paramstring$path:文件所在路径 *@paramstring$file:文件名 *@returnvoid */ functiondownload($path,$file){ $real=$path.'/'.$file; if(!file_exists($real)){ returnfalse; } $size=filesize($real); $size2=$size-1; $range=0; if(isset($_SERVER['HTTP_RANGE'])){ header('HTTP/1.1206PartialContent'); $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:bytes0-'.$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程序设计有所帮助。