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实现分页的一个示例
Oct 09 PHP
PHP 变量的定义方法
Jan 26 PHP
PHP程序开发范例学习之表单 获取文本框的值
Aug 08 PHP
关于IIS php调用com组件的权限问题
Jan 11 PHP
php实现把数组按指定的个数分隔
Feb 17 PHP
php画图实例
Nov 05 PHP
ThinkPHP中redirect用法分析
Dec 05 PHP
Zend Framework教程之连接数据库并执行增删查的方法(附demo源码下载)
Mar 21 PHP
PHP批量删除jQuery操作
Jul 23 PHP
PHP的mysqli_stmt_init()函数讲解
Jan 24 PHP
php如何获取Http请求
Apr 30 PHP
PHP执行linux命令6个函数代码实例
Nov 24 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加密解密函数(动态加密)
2013/06/19 PHP
使用PHP编写发红包程序
2015/07/22 PHP
php的4种常用运行方式详解
2016/12/22 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
基于jquery可配置循环左右滚动例子
2011/09/09 Javascript
关于页面嵌入swf覆盖div层的问题的解决方法
2014/02/11 Javascript
基于jquery实现的可编辑下拉框实现代码
2014/08/02 Javascript
JavaScript 里的类数组对象
2015/04/08 Javascript
js图片轮播效果实现代码
2020/04/18 Javascript
使用js获取伪元素的content实例
2017/10/24 Javascript
vue插件开发之使用pdf.js实现手机端在线预览pdf文档的方法
2018/07/12 Javascript
angular-tree-component的使用详解
2018/07/30 Javascript
JSON的parse()方法介绍
2019/01/31 Javascript
Node.js一行代码实现静态文件服务器的方法步骤
2019/05/07 Javascript
Nuxt使用Vuex的方法示例
2019/09/06 Javascript
vuex存取值和映射函数使用说明
2020/07/24 Javascript
Python中使用第三方库xlrd来写入Excel文件示例
2015/04/05 Python
使用Python装饰器在Django框架下去除冗余代码的教程
2015/04/16 Python
python实现的系统实用log类实例
2015/06/30 Python
详解在Python程序中解析并修改XML内容的方法
2015/11/16 Python
Python文件操作基本流程代码实例
2017/12/11 Python
浅析python的Lambda表达式
2019/02/27 Python
python处理大日志文件
2019/07/23 Python
django框架用户权限中的session缓存到redis中的方法
2019/08/06 Python
python PIL和CV对 图片的读取,显示,裁剪,保存实现方法
2019/08/07 Python
详解pyqt5的UI中嵌入matplotlib图形并实时刷新(挖坑和填坑)
2020/08/07 Python
凯伦·米莲女装网上商店:Karen Millen
2017/11/07 全球购物
Perfume’s Club法国站:购买香水和化妆品
2019/05/02 全球购物
教师推荐信范文
2013/11/24 职场文书
经典婚礼主持词
2014/03/13 职场文书
幼儿园2014年度工作总结
2014/11/10 职场文书
2014年度思想工作总结
2014/11/27 职场文书
大学生党员自我评价
2015/03/04 职场文书
php引用传递
2021/04/01 PHP
OpenCV中resize函数插值算法的实现过程(五种)
2021/06/05 Python
python函数的两种嵌套方法使用
2022/04/02 Python