当前位置: 移动技术网 > IT编程>开发语言>PHP > php实现文件下载(支持中文文名)

php实现文件下载(支持中文文名)

2019年04月01日  | 移动技术网IT编程  | 我要评论

爱海滔滔简谱,时小雨简历,机械加工外发

复制代码 代码如下:

 /*======================================================
  $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);
 }
?>


如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网