本文实例讲述了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
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我