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 相关文章推荐
初探PHP5
Oct 09 PHP
Windows2003 下 MySQL 数据库每天自动备份
Dec 21 PHP
IIS6+PHP5+MySQL5+Zend Optimizer+phpMyAdmin安装配置图文教程 2009年
Jun 08 PHP
php用正则表达式匹配URL的简单方法
Nov 12 PHP
浅谈php扩展imagick
Jun 02 PHP
php控制文件下载速度的方法
Mar 24 PHP
PHP判断手机是IOS还是Android
Dec 09 PHP
CodeIgniter生成静态页的方法
May 17 PHP
php+mysql实现简单登录注册修改密码网页
Nov 30 PHP
php的常量和变量实例详解
Jun 27 PHP
PHP获取HTTP body内容的方法
Dec 31 PHP
laravel添加前台跳转成功页面示例
Oct 22 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中动态HTML的输出技术
2006/10/09 PHP
Array of country list in PHP with Zend Framework
2011/10/17 PHP
PHP重定向与伪静态区别
2017/02/19 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
2017/12/25 PHP
Laravel5.5 视图 - 创建视图和数据传递示例
2019/10/21 PHP
初学prototype,发个JS接受URL参数的代码
2006/09/25 Javascript
IE8 兼容性问题(属性名区分大小写)
2009/06/04 Javascript
JavaScript 学习笔记(十三)Dom创建表格
2010/01/21 Javascript
js显示时间 js显示最后修改时间
2013/01/02 Javascript
js仿百度贴吧验证码特效实例代码
2014/01/16 Javascript
jquery使用on绑定a标签无效 只能用live解决
2016/06/02 Javascript
微信小程序多张图片上传功能
2017/06/07 Javascript
JS实现图片手风琴效果
2020/04/17 Javascript
jquery实现搜索框功能实例详解
2018/07/23 jQuery
JS实现根据指定值删除数组中的元素操作示例
2018/08/02 Javascript
ES6中的类(Class)示例详解
2020/12/09 Javascript
python修改注册表终止360进程实例
2014/10/13 Python
用pandas按列合并两个文件的实例
2018/04/12 Python
使用Python OpenCV为CNN增加图像样本的实现
2019/06/10 Python
Python实现K折交叉验证法的方法步骤
2019/07/11 Python
django认证系统实现自定义权限管理的方法
2019/08/28 Python
python web框架中实现原生分页
2019/09/08 Python
Python实现报警信息实时发送至邮箱功能(实例代码)
2019/11/11 Python
python在不同条件下的输入与输出
2020/02/13 Python
Python爬虫HTPP请求方法有哪些
2020/06/03 Python
Hunter Boots美国官方网站:赫特威灵顿雨靴
2018/06/16 全球购物
医科大学生的自我评价
2013/12/04 职场文书
公证书样本
2014/04/10 职场文书
大学英语演讲稿范文
2014/04/24 职场文书
出租房屋协议书
2014/09/14 职场文书
实习护士自荐信
2015/03/25 职场文书
2015年汽车销售经理工作总结
2015/04/27 职场文书
学校推普周活动总结
2015/05/07 职场文书
责任书范本大全
2015/05/11 职场文书
2016年社区创先争优活动总结
2016/04/05 职场文书
码云(gitee)通过git自动同步到阿里云服务器
2022/12/24 Servers