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 a simple smtp class
Nov 26 PHP
PHP数组对比函数,存在交集则返回真,否则返回假
Feb 03 PHP
php性能优化分析工具XDebug 大型网站调试工具
May 22 PHP
PHP 查找字符串常用函数介绍
Jun 07 PHP
php浏览历史记录的方法
Mar 10 PHP
php导入模块文件分享
Mar 17 PHP
PHP框架Laravel学习心得体会
Oct 28 PHP
Linux下从零开始安装配置Nginx服务器+PHP开发环境
Dec 21 PHP
功能强大的PHP发邮件类
Aug 29 PHP
php 魔术常量详解及实例代码
Dec 04 PHP
如何用PHP做到页面注册审核
Mar 02 PHP
PHP+JS实现的实时搜索提示功能
Mar 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中的CMS的涵义
2007/03/11 PHP
php 表单数据的获取代码
2009/03/10 PHP
php分页思路以及在ZF中的使用
2012/05/30 PHP
360通用php防护代码(使用操作详解)
2013/06/18 PHP
php使用mb_check_encoding检查字符串在指定的编码里是否有效
2013/11/07 PHP
php学习笔记之基础知识
2014/11/08 PHP
解决PHP 7编译安装错误:cannot stat ‘phar.phar’: No such file or directory
2017/02/25 PHP
Jquery 高亮显示文本中重要的关键字
2009/12/24 Javascript
解决iframe的frameborder在chrome/ff/ie下的差异
2010/08/12 Javascript
JavaScript中清空数组的三种方法分享
2011/04/07 Javascript
javascript实现单击和双击并存的方法
2014/12/13 Javascript
yui3的AOP(面向切面编程)和OOP(面向对象编程)
2015/05/01 Javascript
JS实现生成会变大变小的圆环实例
2015/08/05 Javascript
jQuery实现美观的多级动画效果菜单代码
2015/09/06 Javascript
js实现上传图片预览方法
2016/10/25 Javascript
Bootstrap table的使用方法
2016/11/02 Javascript
easyui-combobox 实现简单的自动补全功能示例
2016/11/08 Javascript
html判断当前页面是否在iframe中的实例
2016/11/30 Javascript
AngularJS自定义指令详解(有分页插件代码)
2017/06/12 Javascript
如何理解Vue的.sync修饰符的使用
2017/08/17 Javascript
jquery.picsign图片标注组件实例详解
2018/02/02 jQuery
Vue 去除路径中的#号
2018/04/19 Javascript
jquery 时间戳转日期过程详解
2019/10/12 jQuery
Python随机生成均匀分布在三角形内或者任意多边形内的点
2017/12/14 Python
Python装饰器使用你可能不知道的几种姿势
2019/10/25 Python
python标准库sys和OS的函数使用方法与实例详解
2020/02/12 Python
在python中实现求输出1-3+5-7+9-......101的和
2020/04/02 Python
YSL圣罗兰美妆俄罗斯官网:Yves Saint Lauret RU
2020/09/23 全球购物
餐饮采购员岗位职责
2014/03/15 职场文书
生日主持词
2014/03/20 职场文书
高中班级口号
2014/06/09 职场文书
模具设计与制造专业自荐书
2014/07/01 职场文书
起诉离婚协议书样本
2014/11/25 职场文书
2015年小学实验室工作总结
2015/07/28 职场文书
phpQuery解析HTML乱码问题(补充官网未列出的乱码解决方案)
2021/04/01 PHP
SQL Server中T-SQL标识符介绍与无排序生成序号的方法
2022/05/25 SQL Server