网站地图    收藏   

主页 > php专栏 > php上传下载 >

PHP文件下载的小实例 - php上传下载

来源:自学PHP网    时间:2014-11-28 00:00 作者: 阅读:

[导读] 这个文件下载实例做得非常的详细他是结合header函数与while fread函数把文件分断读出来然后再发送到客户端了,算得上一个标准的文件下载实...

PHP文件下载的小实例

这个文件下载实例做得非常的详细他是结合header函数与while fread函数把文件分断读出来然后再发送到客户端了,算得上一个标准的文件下载实例。

一个PHP文件下载的小实例

  1. /*====================================================== 
  2.   $FileName 为文件名称,必传 
  3.   $FilePath 为文件路径.选填,可以为相对路径或者绝对路径 
  4.       路径只能由英文跟数据组成,不能带有中文 
  5.             如有问题 欢迎联系博主指出 
  6.  ======================================================*/ 
  7.  代码如下 复制代码 
  8. <?php  
  9.  header("Content-type: text/html;charset=utf-8"); 
  10.  if(strlen($FileName)<=3){echo "下载失败:你所以下载的文件信息有误";return;} 
  11.  $FileName=iconv("utf-8","gb2312",$FileName);//进行文件名格式转换,以防中文乱码 
  12.  //开始判断路径 
  13.  if(!is_null($FilePath)&&strlen($FilePath)>1){ 
  14.    
  15.   if(substr($FilePath,0,1)=='/'){//判断是否为绝对路径 
  16.    
  17.    $FilePath=$_SERVER['DOCUMENT_ROOT'].$FilePath
  18.     
  19.     } 
  20.   if(substr($FilePath,-1)!="/"){//检查最后是否为 / 结尾 
  21.    
  22.    $FilePath=$FilePath.'/'
  23.     
  24.     } 
  25.   if(is_numeric(strpos($FilePath,":\"))){//检查是否为绝对路径 
  26.    
  27.    $FilePath=str_replace("/","\",$FilePath); 
  28.     
  29.     } 
  30.    }elseif(strlen($FilePath)==1&&$FilePath!="/"){ 
  31.      
  32.     $FilePath=$FilePath."/"
  33.      
  34.    }else
  35.      
  36.     $FilePath=""
  37.      
  38.   } 
  39.   if(!file_exists($FilePath.$FileName)){ 
  40.     
  41.    echo"下载失败:所要下载的文件未找到";return
  42.     
  43.    } 
  44.   /*================================================ 
  45.    发送下载相关的头部信息 
  46.   =================================================*/ 
  47.    
  48.   header("Content-type: application/octet-stream"); 
  49.    
  50.   header("Accept-Ranges: bytes");//按照字节大小返回 
  51.    
  52.   header("Accept-Length: $FileSize");//返回文件大小 
  53.    
  54.   header("Content-Disposition: attachment; filename=".$FileName);//这里客户端的弹出对话框,对应的文件名 
  55.    
  56.   /*================================================ 
  57.    开始下载相关 
  58.   =================================================*/  
  59. $FileSize=filesize($FilePath.$FileName); 
  60.    
  61.   $File=fopen($FilePath.$FileName,"r");//打开文件 
  62.    
  63.   $FileBuff=512; 
  64.    
  65.   while($FileSize>=0){ 
  66.     
  67.    $FileSize-=$FileBuff
  68.     
  69.    echo fread($File,$FileBuff); 
  70.     
  71.   } 
  72.     
  73.   fclose($File); 
  74.  } 
  75. ?> 

总结:本下载实例并且支持中文文名了,在文件开头就进行了uft8编码转换了.

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论