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 各种应用乱码问题的解决方法
May 09 PHP
PHP pathinfo()获得文件的路径、名称等信息说明
Sep 13 PHP
PHP imagecreatefrombmp 从BMP文件或URL新建一图像
Jul 16 PHP
php实例分享之mysql数据备份
May 19 PHP
php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
Apr 03 PHP
Win7下手动安装apache2.2、php5.4笔记
Apr 03 PHP
Yii2搭建后台并实现rbac权限控制完整实例教程
Apr 28 PHP
制作个性化的WordPress登陆界面的实例教程
May 21 PHP
PHP中的Iterator迭代对象属性详解
Apr 12 PHP
gearman中任务的优先级和返回状态实例分析
Feb 27 PHP
Laravel中如何轻松容易的输出完整的SQL语句
Jul 26 PHP
详解PHP设计模式之依赖注入模式
May 25 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
php去除字符串换行符示例分享
2014/02/13 PHP
thinkphp四种url访问方式详解
2014/11/28 PHP
强大的jquery插件jqeuryUI做网页对话框效果!简单
2011/04/14 Javascript
js获取光标位置和设置文本框光标位置示例代码
2014/01/09 Javascript
JavaScript动态改变HTML页面元素例如添加或删除
2014/08/10 Javascript
JavaScript对象反射用法实例
2015/04/17 Javascript
分享jQuery封装好的一些常用操作
2016/07/28 Javascript
用JS写的一个Ajax库(实例代码)
2016/08/06 Javascript
微信小程序 教程之WXML
2016/10/18 Javascript
浅谈angularjs module返回对象的坑(推荐)
2016/10/21 Javascript
js实现随机抽选效果、随机抽选红色球效果
2017/01/13 Javascript
JavaScript中一些特殊的字符运算
2017/08/17 Javascript
spirngmvc js传递复杂json参数到controller的实例
2018/03/29 Javascript
Angular5给组件本身的标签添加样式class的方法
2018/04/07 Javascript
JavaScript实现京东购物放大镜和选项卡效果的方法分析
2018/07/05 Javascript
JS复杂判断的更优雅写法代码详解
2018/11/07 Javascript
微信小程序实现发送验证码按钮效果
2018/12/20 Javascript
JS中创建自定义类型的常用模式总结【工厂模式,构造函数模式,原型模式,动态原型模式等】
2019/01/19 Javascript
js字符串类型String常用操作实例总结
2019/07/05 Javascript
Nodejs监控事件循环异常示例详解
2019/09/22 NodeJs
VUE.js实现动态设置输入框disabled属性
2019/10/28 Javascript
vue 指令和过滤器的基本使用(品牌管理案例)
2019/11/04 Javascript
vue登录页实现使用cookie记住7天密码功能的方法
2021/02/18 Vue.js
python 实现网上商城,转账,存取款等功能的信用卡系统
2016/07/15 Python
使用pandas模块读取csv文件和excel表格,并用matplotlib画图的方法
2018/06/22 Python
Python面向对象类的继承实例详解
2018/06/27 Python
详解python中的模块及包导入
2019/08/30 Python
使用wxpy实现自动发送微信消息功能
2020/02/28 Python
详解python os.path.exists判断文件或文件夹是否存在
2020/11/16 Python
英国最大的纸工艺品商店:CraftStash
2018/12/01 全球购物
字符串str除首尾字符外的其他字符按升序排列
2013/03/08 面试题
护理专业推荐信
2013/11/07 职场文书
学生期末评语大全
2014/04/30 职场文书
单位消防安全责任书
2014/07/23 职场文书
教你快速开启Apache SkyWalking的自监控
2021/04/25 Servers
PHP中多字节字符串操作实例详解
2021/08/23 PHP