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(5) 类和对象
Feb 16 PHP
php适配器模式介绍
Aug 14 PHP
php计算程序运行时间的简单例子分享
May 10 PHP
php一行代码获取文件后缀名实例分析
Nov 12 PHP
PHP下的浮点运算不准的解决方法
Oct 27 PHP
php基于PDO实现功能强大的MYSQL封装类实例
Feb 27 PHP
php将html转为图片的实现方法
May 19 PHP
thinkphp分页集成实例
Jul 24 PHP
Laravel 5.5官方推荐的Nginx配置学习教程
Oct 06 PHP
PHP中抽象类,接口功能、定义方法示例
Feb 26 PHP
laravel实现按时间日期进行分组统计方法示例
Mar 23 PHP
laravel中的fillable和guarded属性详解
Oct 23 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框架调用其它控制器方法 实现自定义跳转界面功能示例
2019/07/03 PHP
php与js的区别是什么
2013/08/05 Javascript
文本框只能选择数据到文本框禁止手动输入
2013/11/22 Javascript
高性能JavaScript循环语句和条件语句
2016/01/20 Javascript
jquery插件Jplayer使用方法简析
2016/04/22 Javascript
NodeJS连接MongoDB数据库时报错的快速解决方法
2016/05/13 NodeJs
深入浅出讲解ES6的解构
2016/08/03 Javascript
关于 jQuery Easyui异步加载tree的问题解析
2016/12/06 Javascript
JS实现给json数组动态赋值的方法示例
2020/03/19 Javascript
基于Vue实现支持按周切换的日历
2020/09/24 Javascript
浅谈React Native 中组件的生命周期
2017/09/08 Javascript
js判断文件类型大小并给出提示的实现方法
2018/01/03 Javascript
angular中如何绑定iframe中src的方法
2019/02/01 Javascript
利用Dectorator分模块存储Vuex状态的实现
2019/02/05 Javascript
js实现选项卡效果
2020/03/07 Javascript
js实现弹窗效果
2020/08/09 Javascript
[52:02]DOTA2-DPC中国联赛 正赛 Phoenix vs Dragon BO3 第二场 2月26日
2021/03/11 DOTA
python继承和抽象类的实现方法
2015/01/14 Python
python实现识别手写数字 python图像识别算法
2020/03/23 Python
django 按时间范围查询数据库实例代码
2018/02/11 Python
Django2.1.3 中间件使用详解
2018/11/26 Python
Keras官方中文文档:性能评估Metrices详解
2020/06/15 Python
CSS3实现瀑布流布局与无限加载图片相册的实例代码
2016/12/22 HTML / CSS
美国最大的珠宝首饰网上商城:Jewelry.com
2016/07/22 全球购物
惠普美国官方商店:HP Official Store
2016/08/28 全球购物
美国时尚孕妇装品牌:A Pea in the Pod
2017/07/16 全球购物
英国亚马逊官方网站:Amazon.co.uk
2019/08/09 全球购物
逻辑链路控制协议
2016/10/01 面试题
展会邀请函范文
2014/01/26 职场文书
初三学习决心书
2014/03/11 职场文书
学雷锋志愿者活动总结
2014/06/27 职场文书
旅行社优秀创业计划书
2014/08/16 职场文书
销售开票员岗位职责
2015/04/15 职场文书
2015年实习班主任工作总结
2015/04/23 职场文书
化工厂员工工作总结
2015/10/15 职场文书
2016年教师节慰问信
2015/12/01 职场文书