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下载文件的函数实例代码的相关知识,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!