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 相关文章推荐
php获取操作系统语言代码
Nov 04 PHP
PHP使用GIFEncoder类生成的GIF动态图片验证码
Jul 01 PHP
php之readdir函数用法实例
Nov 13 PHP
js+php实现静态页面实时调用用户登陆状态的方法
Jan 04 PHP
PIGCMS 如何关闭聊天机器人
Feb 12 PHP
PHP遍历数组的方法汇总
Apr 30 PHP
PHP中使用substr()截取字符串出现中文乱码问题该怎么办
Oct 21 PHP
PHP内核探索之变量
Dec 22 PHP
php面向对象编程self和static的区别
May 08 PHP
PHP基于GD库实现的生成图片缩略图函数示例
Jul 05 PHP
ThinkPHP框架表单验证操作方法
Jul 19 PHP
PHP 构造函数和析构函数原理与用法分析
Apr 21 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通过ajax实现双击table修改内容
2014/04/28 PHP
PHP实现适用于文件内容操作的分页类
2016/06/15 PHP
JavaScript入门教程(7) History历史对象
2009/01/31 Javascript
高效的获取当前元素是父元素的第几个子元素
2013/10/15 Javascript
TypeScript 中接口详解
2015/06/19 Javascript
对JavaScript客户端应用编程的一些建议
2015/06/24 Javascript
javascript中apply/call和bind的使用
2017/02/15 Javascript
jQuery插件zTree实现获取一级节点数据的方法
2017/03/08 Javascript
为Jquery EasyUI 组件加上清除功能的方法(详解)
2017/04/13 jQuery
删除table表格行的实例讲解
2017/09/21 Javascript
JS实现瀑布流布局
2017/10/21 Javascript
Vue-cli中为单独页面设置背景色的实现方法
2018/02/11 Javascript
jQuery实现参数自定义的文字跑马灯效果
2018/08/15 jQuery
JS中数据结构之栈
2019/01/01 Javascript
vue实现吸顶、锚点和滚动高亮按钮效果
2019/10/21 Javascript
js实现表格单列按字母排序
2020/08/12 Javascript
Python Mysql数据库操作 Perl操作Mysql数据库
2009/01/12 Python
让python json encode datetime类型
2010/12/28 Python
收集的几个Python小技巧分享
2014/11/22 Python
python动态参数用法实例分析
2015/05/25 Python
python 中split 和 strip的实例详解
2017/07/12 Python
python数据处理 根据颜色对图片进行分类的方法
2018/12/08 Python
对python中基于tcp协议的通信(数据传输)实例讲解
2019/07/22 Python
Python可视化工具如何实现动态图表
2020/10/23 Python
matplotlib bar()实现百分比堆积柱状图
2021/02/24 Python
HTML5移动开发图片压缩上传功能
2016/11/09 HTML / CSS
HTML5制作表格样式
2016/11/15 HTML / CSS
C语言笔试题回忆
2015/04/02 面试题
中专生求职自荐信范文
2013/12/22 职场文书
管理专员自荐信
2014/01/26 职场文书
梅花魂教学反思
2014/04/25 职场文书
广告学专业毕业生自荐信
2014/05/28 职场文书
小学优秀学生评语
2014/12/29 职场文书
2019年大学生职业生涯规划书最新范文
2019/03/25 职场文书
两行代码解决Jupyter Notebook中文不能显示的问题
2021/04/24 Python
PostgreSQL通过oracle_fdw访问Oracle数据的实现步骤
2021/05/21 PostgreSQL