PHP下载文件的函数实例代码
通过函数完成下载文件的PHP功能代码
functiondownload($url,$filename){
//获得文件大小,防止超过2G的文件,用sprintf来读
$filesize=sprintf("%u",filesize($url));
if(!$filesize){
return;
}
header("Content-type:application/octet-stream\n");//application/octet-stream
header("Content-type:unknown/unknown;");
header("Content-disposition:attachment;filename=\"".$filename."\"");
header('Content-transfer-encoding:binary');
if($range=getenv('HTTP_RANGE')){//当有偏移量的时候,采用206的断点续传头
$range=explode('=',$range);
$range=$range[1];
header("HTTP/1.1206PartialContent");
header("Date:".gmdate("D,dMYH:i:s")."GMT");
header("Last-Modified:".gmdate("D,dMYH: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;}
loadFile($url);}
functionloadFile($filename,$retbytes=true){
$buffer='';$cnt=0;$handle=fopen($filename,'rb');
if($handle===false){returnfalse;
}while(!feof($handle)){
$buffer=fread($handle,1024*1024);
echo$buffer;
ob_flush();
flush();
if($retbytes){
$cnt+=strlen($buffer);
}
}
$status=fclose($handle);
if($retbytes&&$status){
return$cnt;//returnnum.bytesdeliveredlikereadfile()does.
}
return$status;}
输入2个参数即可完成下载download($url,$filename)
以上所述是小编给大家介绍的PHP下载文件的函数实例代码的相关知识,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!