PHP实现文件下载【实例分享】


Posted in PHP onApril 28, 2017

话不多说,请看代码:

<?php

/**
*
*参数说明:
*
*  $file_name  文件名(中英文)
*  $_SERVER['DOCUMENT_ROOT']  获取apache所在路径
*
*/

function download($file_name){
   //对中文文件名进行转码
    $file_name=iconv("UTF-8","GB2312",$file_name);  
     //文件绝对路径:E:/wamp/www."/Demo/Object/DownfileSource/".qq.txt
    $filepath = $_SERVER['DOCUMENT_ROOT']."/Demo/Object/DownfileSource/".$file_name;  

     if(!file_exists($filepath)){ //检查文件是否存在
      echo "该文件不存在!";
     return;
     }

     $fp = fopen($filepath, 'r');  //打开文件
      $file_size = filesize($filepath);  //计算文件大小
      if ($file_size>1) {
       echo "<script>window.alert('文件过大,您没权限下载')</script>";
       return;
      }

     //HTTP头部信息
      header("Content-type: application/octet-stream");
      header("Accept-Ranges: bytes");
    header("Accept-Length: ".$file_size);
      header("Content-Disposition: attachment; filename=".$file_name);

      //输出文件内容 echo fread($fp, $file_size);

    $buffer = 1024;
    //为了下载安全,做一个文件字节读取计数器
    $file_count = 0;
    //判断文件是否结束 feof
    while (!feof($fp) && ($file_size-$file_count > 0)) {

      $file_data = fread($fp, $buffer); //统计读了多少字节
      $file_count+=$buffer;

      echo "$file_data"; //把数据会送给浏览器
    }
     fclose($fp);
}
//调用
 download("qq.txt"); //只需填写文件名即可
?>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

PHP 相关文章推荐
PHP中路径问题的解决方案
Oct 09 PHP
实现树状结构的两种方法
Oct 09 PHP
PHP完整的日历类(CLASS)
Nov 27 PHP
PHP 批量删除数据的方法分析
Oct 30 PHP
php实现批量压缩图片文件大小的脚本
Jul 04 PHP
PHP中使用strpos函数实现屏蔽敏感关键字功能
Aug 21 PHP
php通过递归方式复制目录和子目录的方法
Mar 13 PHP
PHP中使用GD库绘制折线图 折线统计图的绘制方法
Nov 09 PHP
深入理解PHP内核(二)之SAPI探究
Nov 10 PHP
php图片添加文字水印实现代码
Mar 15 PHP
PHP入门教程之表单与验证实例详解
Sep 11 PHP
浅析PHP数据导出知识点
Feb 17 PHP
PHP实现批量删除(封装)
Apr 28 #PHP
ThinkPHP实现生成和校验验证码功能
Apr 28 #PHP
PHP后台微信支付和支付宝支付开发
Apr 28 #PHP
ThinkPHP中create()方法自动验证表单信息
Apr 28 #PHP
ThinkPHP实现简单登陆功能
Apr 28 #PHP
ThinkPHP实现分页功能
Apr 28 #PHP
ThinkPHP实现附件上传功能
Apr 27 #PHP
You might like
thinkPHP5项目中实现QQ第三方登录功能
2017/10/20 PHP
网站上面有这种切换效果
2006/06/26 Javascript
JS 有名函数表达式全面解析
2010/03/19 Javascript
JQuery Tab选项卡效果代码改进版
2010/04/01 Javascript
jquery实现固定顶部导航效果(仿蘑菇街)
2013/03/21 Javascript
JavaScript—window对象使用示例
2013/12/09 Javascript
JavaScript实现存储HTML字符串示例
2014/04/21 Javascript
javascript实现的一个随机点名功能
2014/08/26 Javascript
简单谈谈Javascript中类型的判断
2015/10/19 Javascript
jQuery siblings()用法实例详解
2016/04/26 Javascript
Bootstrap编写一个兼容主流浏览器的受众门户式风格页面
2016/07/01 Javascript
jQuery基于BootStrap样式实现无限极地区联动
2016/08/26 Javascript
HTML中setCapture、releaseCapture 使用方法浅析
2016/09/25 Javascript
JavaScript运动框架 多值运动(四)
2017/05/18 Javascript
bootstrap响应式工具使用详解
2017/11/29 Javascript
Vue的轮播图组件实现方法
2018/03/03 Javascript
JavaScript引用类型Object常见用法实例分析
2018/08/08 Javascript
微信小程序自定义菜单切换栏tabbar组件代码实例
2019/12/30 Javascript
vue实现页面切换滑动效果
2020/06/29 Javascript
使用JavaScript和MQTT开发物联网应用示例解析
2020/08/07 Javascript
使用vue构建多页面应用的示例
2020/10/22 Javascript
[01:20]2018DOTA2亚洲邀请赛总决赛战队LGD晋级之路
2018/04/07 DOTA
python操作摄像头截图实现远程监控的例子
2014/03/25 Python
Python实现简单登录验证
2016/04/13 Python
Python获取二维矩阵每列最大值的方法
2018/04/03 Python
python-str,list,set间的转换实例
2018/06/27 Python
python使用KNN算法识别手写数字
2019/04/25 Python
如何在python开发工具PyCharm中搭建QtPy环境(教程详解)
2020/02/04 Python
python实现拼图小游戏
2020/02/22 Python
Python如何测试stdout输出
2020/08/10 Python
Spy++的使用方法及下载教程
2021/01/29 Python
纽约通行卡:The New York Pass(免费游览纽约90多个景点)
2017/07/29 全球购物
美国最大的万圣节服装网站:HalloweenCostumes.com
2017/10/12 全球购物
工商企业管理应届生求职信
2014/05/04 职场文书
大学生个人求职信例文
2014/07/07 职场文书
大学生创业计划书
2014/08/14 职场文书