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 相关文章推荐
PHP6 先修班 JSON实例代码
Aug 23 PHP
PHP empty函数报错解决办法
Mar 06 PHP
destoon在360浏览器下出现用户被强行注销的解决方法
Jun 26 PHP
ThinkPHP中处理表单中的注意事项
Nov 22 PHP
php使用str_replace实现输入框回车替换br的方法
Nov 24 PHP
PHP将session信息存储到数据库的类实例
Mar 04 PHP
php从csv文件读取数据并输出到网页的方法
Mar 14 PHP
php执行多个存储过程的方法【基于thinkPHP】
Nov 08 PHP
php json中文编码为null的解决办法
Dec 14 PHP
PHP MYSQL简易交互式站点开发
Dec 27 PHP
数组任意位置插入元素,删除特定元素的实例
Mar 02 PHP
PHP去除空数组且数组键名重置的讲解
Feb 28 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编程最快明白》第五讲:php目录、文件操作
2010/11/01 PHP
浅析php header 跳转
2013/06/17 PHP
php用户注册时常用的检验函数实例总结
2014/12/22 PHP
JavaScript与HTML结合的基本使用方法整理
2015/10/12 PHP
php文件类型MIME对照表(比较全)
2016/10/07 PHP
PHP优化之批量操作MySQL实例分析
2020/04/23 PHP
可以支持多中格式的JS键盘
2007/05/02 Javascript
doctype后如何获得body.clientHeight的方法
2007/07/11 Javascript
JQuery 图片的展开和伸缩实例讲解
2013/04/18 Javascript
jQuery性能优化技巧分析
2015/02/20 Javascript
Highcharts学习之数据列
2016/08/03 Javascript
js HTML5上传示例代码完整版
2016/10/10 Javascript
JS如何生成一个不重复的ID的函数
2016/12/25 Javascript
关于javascript事件响应的基础语法总结(必看篇)
2016/12/26 Javascript
详细分析jsonp的原理和实现方式
2017/11/20 Javascript
Vue SPA单页应用首屏优化实践
2018/06/28 Javascript
微信小程序单选radio及多选checkbox按钮用法示例
2019/04/30 Javascript
vue动态注册组件实例代码详解
2019/05/30 Javascript
初试vue-cli使用HBuilderx打包app的坑
2019/07/17 Javascript
[01:29]2014DOTA2展望TI 剑指西雅图DK战队专访
2014/06/30 DOTA
[03:44]2015国际邀请赛选手档案—Cloud9.NoTail
2015/07/28 DOTA
Python lambda表达式用法实例分析
2018/12/25 Python
python使用pandas处理excel文件转为csv文件的方法示例
2019/07/18 Python
python实现12306登录并保存cookie的方法示例
2019/12/17 Python
python Popen 获取输出,等待运行完成示例
2019/12/30 Python
Python非单向递归函数如何返回全部结果
2020/12/18 Python
THE OUTNET美国官网:国际设计师品牌折扣网站
2017/03/07 全球购物
世嘉游戏英国官方商店:SEGA Shop UK
2019/09/20 全球购物
大学生实习证明范本
2014/01/15 职场文书
人民教师求职自荐信
2014/03/12 职场文书
气象学专业个人求职信
2014/03/15 职场文书
继承权公证书
2014/04/09 职场文书
2014年旅游局法制宣传日活动总结
2014/11/01 职场文书
2015年秋学期师德师风建设工作总结
2015/10/23 职场文书
SQL SERVER触发器详解
2022/02/24 SQL Server
详解Python+OpenCV绘制灰度直方图
2022/03/22 Python