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 相关文章推荐
PHP4在WinXP下IIS和Apache2服务器上的安装实例
Oct 09 PHP
PHP 设置MySQL连接字符集的方法
Jan 02 PHP
一致性哈希算法以及其PHP实现详细解析
Aug 24 PHP
php截取中文字符串不乱码的方法
Dec 25 PHP
ThinkPHP模板比较标签用法详解
Jun 30 PHP
php each 返回数组中当前的键值对并将数组指针向前移动一步实例
Nov 22 PHP
PHP Socket网络操作类定义与用法示例
Aug 30 PHP
Linux下 php7安装redis的方法
Nov 01 PHP
PHP chop()函数讲解
Feb 11 PHP
Laravel5.7 Eloquent ORM快速入门详解
Apr 12 PHP
php/JS实现的生成随机密码(验证码)功能示例
Jun 06 PHP
PHP连接MySQL数据库操作代码实例解析
Jul 11 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 Curl出现403错误的解决办法
2014/05/29 PHP
总结PHP如何获取当前主机、域名、网址、路径、端口和参数等
2016/09/09 PHP
php、mysql查询当天,查询本周,查询本月的数据实例(字段是时间戳)
2017/02/04 PHP
PHP中overload与override的区别
2017/02/13 PHP
thinkphp分页集成实例
2017/07/24 PHP
获取焦点时,利用js定时器设定时间执行动作
2010/04/02 Javascript
键盘上一张下一张兼容IE/google/firefox等浏览器
2014/01/28 Javascript
JS实现灵巧的下拉导航效果代码
2015/08/25 Javascript
javascript判断网页是关闭还是刷新
2015/09/12 Javascript
JavaScript模版引擎的基本实现方法浅析
2016/02/15 Javascript
jQuery 获取跨域XML(RSS)数据的相关总结分析
2016/05/18 Javascript
vue中如何去掉空格的方法实现
2018/11/09 Javascript
Vue组件通信的几种实现方法
2019/04/25 Javascript
详解vue中使用protobuf踩坑记
2019/05/07 Javascript
JS实现随机抽取三人
2019/11/06 Javascript
ES6函数和数组用法实例分析
2020/05/23 Javascript
js实现表格单列按字母排序
2020/08/12 Javascript
微信小程序实现点击导航条切换页面
2020/11/19 Javascript
Vue 组件注册全解析
2020/12/17 Vue.js
Python使用chardet判断字符编码
2015/05/09 Python
利用python实现命令行有道词典的方法示例
2017/01/31 Python
利用Python如何实现一个小说网站雏形
2018/11/23 Python
python print输出延时,让其立刻输出的方法
2019/01/07 Python
如何使用python爬虫爬取要登陆的网站
2019/07/12 Python
Django获取该数据的上一条和下一条方法
2019/08/12 Python
Python3标准库之threading进程中管理并发操作方法
2020/03/30 Python
Python发送邮件封装实现过程详解
2020/05/09 Python
Django实现内容缓存实例方法
2020/06/30 Python
Python Tkinter实例——模拟掷骰子
2020/10/24 Python
CSS3新增布局之: flex详解
2020/06/18 HTML / CSS
美国职棒大联盟的官方手套、球和头盔:Rawlings
2020/02/15 全球购物
新闻工作者先进事迹
2014/05/26 职场文书
关于旅游的活动方案
2014/08/15 职场文书
领导干部作风建设总结
2014/10/23 职场文书
学生不参加考试检讨书
2015/02/19 职场文书
西游记读书笔记
2015/06/25 职场文书