Heim  >  Artikel  >  Backend-Entwicklung  >  php实现文件下载(支持中文文名)_php实例

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

WBOY
WBOYOriginal
2016-05-17 08:52:331425Durchsuche

复制代码 代码如下:

 /*======================================================
  $FileName 为文件名称,必传
  $FilePath 为文件路径.选填,可以为相对路径或者绝对路径
      路径只能由英文跟数据组成,不能带有中文
 ======================================================*/

 header("Content-type: text/html;charset=utf-8");
 if(strlen($FileName) $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);
 }
?>


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn