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


Posted in PHP onDecember 04, 2013
 /*======================================================
  $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 相关文章推荐
oracle资料库函式库
Oct 09 PHP
APMServ使用说明
Oct 23 PHP
MayFish PHP的MVC架构的开发框架
Aug 13 PHP
Codeigniter操作数据库表的优化写法总结
Jun 12 PHP
php读取mssql的ntext字段返回值为空的解决方法
Dec 30 PHP
PHP列出MySQL中所有数据库的方法
Mar 12 PHP
php简单日历函数
Oct 28 PHP
php脚本运行时的超时机制详解
Feb 17 PHP
Yii2中OAuth扩展及QQ互联登录实现方法
May 16 PHP
PHP环形链表实现方法示例
Sep 15 PHP
php微信开发之关注事件
Jun 14 PHP
php使用goto实现自动重启swoole、reactphp、workerman服务的代码
Apr 13 PHP
php指定函数参数默认值示例代码
Dec 04 #PHP
根据中文裁减字符串函数的php代码
Dec 03 #PHP
使用php检测用户当前使用的浏览器是否为IE浏览器
Dec 03 #PHP
php查找任何页面上的所有链接的方法
Dec 03 #PHP
php实现查看邮件是否已被阅读的方法
Dec 03 #PHP
php 模拟 asp.net webFrom 按钮提交事件的思路及代码
Dec 02 #PHP
php中{}大括号是什么意思
Dec 01 #PHP
You might like
PHP 七大优势分析
2009/06/23 PHP
PHP中strnatcmp()函数“自然排序算法”进行字符串比较用法分析(对比strcmp函数)
2016/01/07 PHP
php mysql获取表字段名称和字段信息的三种方法
2016/11/13 PHP
PHP注释语法规范与命名规范详解篇
2018/01/21 PHP
PHP使用Curl实现模拟登录及抓取数据功能示例
2018/04/27 PHP
可缩放Reloaded-一个针对可缩放元素的复用组件
2007/03/10 Javascript
JQuery中的$.getJSON 使用说明
2011/03/10 Javascript
原生js写的放大镜效果
2012/08/22 Javascript
jquery获取div宽度的实现思路与代码
2013/01/13 Javascript
javascript中match函数的用法小结
2014/02/08 Javascript
javascript中Object使用详解
2015/01/26 Javascript
JS实现霓虹灯文字效果的方法
2015/08/06 Javascript
Jquery获取第一个子元素简单实例
2016/06/02 Javascript
第一次接触神奇的Bootstrap导航条
2016/08/09 Javascript
jQuery展示表格点击变色、全选、删除
2017/01/05 Javascript
利用n 升级工具升级Node.js版本及在mac环境下的坑
2017/02/15 Javascript
浅谈webpack组织模块的原理
2018/03/10 Javascript
JavaScript实现图片懒加载的方法分析
2018/07/05 Javascript
微信小程序局部刷新触发整页刷新效果的实现代码
2018/11/21 Javascript
jQuery选择器之基本选择器用法实例分析
2019/02/19 jQuery
Vue使用Proxy监听所有接口状态的方法实现
2019/06/07 Javascript
jQuery与原生JavaScript选择HTML元素集合用法对比分析
2019/11/26 jQuery
微信小程序使用 vant Dialog组件的正确方式
2020/02/21 Javascript
基于Django静态资源部署404的解决方法
2019/07/28 Python
详解python路径拼接os.path.join()函数的用法
2019/10/09 Python
Python 用三行代码提取PDF表格数据
2019/10/13 Python
新西兰珠宝品牌:Michael Hill
2017/09/16 全球购物
大学生四个方面的自我评价
2013/09/19 职场文书
初中地理教学反思
2014/01/11 职场文书
卫生安全检查制度
2014/02/04 职场文书
原材料检验岗位职责
2014/03/15 职场文书
小学课外阅读总结
2014/07/09 职场文书
销售简历自我评价怎么写
2014/09/26 职场文书
主持人大赛开场白
2015/05/29 职场文书
毕业典礼致辞
2015/07/29 职场文书
2016年第16个全民国防教育日宣传活动总结
2016/04/05 职场文书