Nov 16

php中实现断点传 不指定

bkkkd , 21:12 , 开发应用 , 评论(0) , 引用(0) , 阅读(4098) , Via 本站原创 | |
<?php

/*

* @url: 文件地址

* @filename: 要保存的文件名

*/

function _download($url, $filename)

{

// 获得文件大小, 防止超过2G的文件, 用sprintf来读

$filesize = sprintf("%u", filesize($url));



if (!$filesize)

{

return;

}



header("Content-type:application/x-msdownload\n"); //application/octet-stream

header("Content-type:unknown/unknown;");

header("Content-disposition: inline; filename=\"".$filename."\"");

header('Content-transfer-encoding: binary');



if ($range = getenv('HTTP_RANGE')) // 当有偏移量的时候,采用206的断点续传头

{

$range = explode('=', $range);

$range = $range[1];



header("HTTP/1.1 206 Partial Content");

header("Date: " . gmdate("D, d M Y H:i:s") . " GMT");

header("Last-Modified: ".gmdate("D, d M Y H:i:s", filemtime($url))." GMT");

header("Accept-Ranges: bytes");

header("Content-Length:".($filesize - $range));

header("Content-Range: bytes ".$range.($filesize-1)."/".$filesize);

header("Connection: close"."\n\n");

}

else

{

header("Content-Length:".$filesize."\n\n");

$range = 0;

}



$fp = fopen($url, 'rb');

fseek($fp, $range);

while ($bbsf = fread($fp, 4096))

{

echo $bbsf;

}

fclose($fp);



}

?>

发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]