- 相關(guān)推薦
PHP實現(xiàn)HTTP斷點續(xù)傳的方法
PHP是一種通用開源腳本語言。本文實例講述了PHP實現(xiàn)HTTP斷點續(xù)傳的方法。分享給大家供大家參考。
具體實現(xiàn)方法如下:
<?php
/**
* PHP-HTTP斷點續(xù)傳實現(xiàn)
* @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實現(xiàn)HTTP斷點續(xù)傳的方法】相關(guān)文章:
PHP列表頁實現(xiàn)的方法05-24
PHP實現(xiàn)多線程的方法03-19
PHP實現(xiàn)多線程的方法08-02
PHP多線程的實現(xiàn)方法03-13
php頁面緩存實現(xiàn)方法07-20
PHP實現(xiàn)獲取域名的方法小結(jié)02-03
PHP實現(xiàn)無限級分類的方法07-14
php實現(xiàn)簡單文件下載的方法07-24