/*====================================================== $filename 为文件名称,必传 $filepath 为文件路径.选填,可以为相对路径或者绝对路径 路径只能由英文跟数据组成,不能带有中文 ======================================================*/ <?php header("content-type: text/html;charset=utf-8"); if(strlen($filename)<=3){echo "下载失败:你所以下载的文件信息有误";return;} $filename=iconv("utf-8","gb2312",$filename);//进行文件名格式转换,以防中文乱码 //开始判断路径 if(!is_null($filepath)&&strlen($filepath)>1){ if(substr($filepath,0,1)=='/'){//判断是否为绝对路径 $filepath=$_server['document_root'].$filepath; } if(substr($filepath,-1)!="/"){//检查最后是否为 / 结尾 $filepath=$filepath.'/'; } if(is_numeric(strpos($filepath,":\"))){//检查是否为绝对路径 $filepath=str_replace("/","\",$filepath); } }elseif(strlen($filepath)==1&&$filepath!="/"){ $filepath=$filepath."/"; }else{ $filepath=""; } if(!file_exists($filepath.$filename)){ echo"下载失败:所要下载的文件未找到";return; } /*================================================ 发送下载相关的头部信息 =================================================*/ header("content-type: application/octet-stream"); header("accept-ranges: bytes");//按照字节大小返回 header("accept-length: $filesize");//返回文件大小 header("content-disposition: attachment; filename=".$filename);//这里客户端的弹出对话框,对应的文件名 /*================================================ 开始下载相关 =================================================*/ $filesize=filesize($filepath.$filename); $file=fopen($filepath.$filename,"r");//打开文件 $filebuff=512; while($filesize>=0){ $filesize-=$filebuff; echo fread($file,$filebuff); } fclose($file); } ?>
以上就是php实现文件下载(支持中文文名)_php教程的内容。
