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模拟HTTP认证
Oct 09 PHP
PHP项目开发中最常用的自定义函数整理
Dec 02 PHP
PHP 自定义错误处理函数的使用详解
May 10 PHP
浅谈使用 PHP 进行手机 APP 开发(API 接口开发)
Aug 11 PHP
php中return的用法实例分析
Feb 28 PHP
分享一个Laravel好用的Cache宏
Mar 02 PHP
使用PHP实现下载CSS文件中的图片
Dec 06 PHP
PHP查看SSL证书信息的方法
Sep 22 PHP
PHP面向对象学习之parent::关键字
Jan 18 PHP
PHP消息队列实现及应用详解【队列处理订单系统和配送系统】
May 20 PHP
php的lavarel框架中join和orWhere的用法
Dec 28 PHP
thinkphp5 路由分发原理
Mar 18 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 fopen 读取带中文URL地址的一点见解
2012/09/25 PHP
PHP中nowdoc和heredoc使用需要注意的一点
2014/03/21 PHP
关于php微信订阅号开发之token验证后自动发送消息给订阅号但是没有消息返回的问题
2015/12/21 PHP
php、java、android、ios通用的3des方法(推荐)
2016/09/09 PHP
JS 自动安装exe程序
2008/11/30 Javascript
轻松学习jQuery插件EasyUI EasyUI实现树形网络基本操作(2)
2015/11/30 Javascript
jQuery限制图片大小的方法
2016/05/25 Javascript
有关jQuery中parent()和siblings()的小问题
2016/06/01 Javascript
详解Node.Js如何处理post数据
2016/09/19 Javascript
JQuery页面随滚动条动态加载效果的简单实现(推荐)
2017/02/08 Javascript
Bootstrap组合上、下拉框简单实现代码
2017/03/06 Javascript
jQuery异步提交表单实例
2017/05/30 jQuery
vue.js选中动态绑定的radio的指定项
2017/06/02 Javascript
vue cli升级webapck4总结
2018/04/04 Javascript
Bootstrap table表格初始化表格数据的方法
2018/07/25 Javascript
微信小程序组件传值图示过程详解
2019/07/31 Javascript
Vue实现验证码功能
2019/12/03 Javascript
跟老齐学Python之从if开始语句的征程
2014/09/14 Python
一些Python中的二维数组的操作方法
2015/05/02 Python
DRF跨域后端解决之django-cors-headers的使用
2019/01/27 Python
django连接oracle时setting 配置方法
2019/08/29 Python
安装多个版本的TensorFlow的方法步骤
2020/04/21 Python
Python实现敏感词过滤的4种方法
2020/09/12 Python
python生成xml时规定dtd实例方法
2020/09/21 Python
韩国休闲女装品牌网站:ANAIS
2016/08/24 全球购物
电子商务专员岗位职责
2013/12/11 职场文书
消防应急演练方案
2014/02/12 职场文书
财务总监岗位职责
2014/03/07 职场文书
学生个人自我鉴定
2014/03/26 职场文书
保研专家推荐信范文
2015/03/25 职场文书
实践论读书笔记
2015/06/29 职场文书
公务员廉洁从政心得体会
2016/01/19 职场文书
Python机器学习三大件之一numpy
2021/05/10 Python
浅谈CSS不规则边框的生成方案
2021/05/25 HTML / CSS
Mysql数据库中datetime、bigint、timestamp来表示时间选择,谁来存储时间效率最高
2021/08/23 MySQL
微软发布Windows 11今年最大更新22H2(附 ISO 镜像官方下载)
2022/09/23 数码科技