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 相关文章推荐
输出控制类
Oct 09 PHP
php+oracle 分页类
Oct 09 PHP
最省空间的计数器
Oct 09 PHP
php制作中间带自己定义图片二维码的方法
Jan 27 PHP
yii框架通过控制台命令创建定时任务示例
Apr 30 PHP
跟我学Laravel之视图 &amp; Response
Oct 15 PHP
php中$_GET与$_POST过滤sql注入的方法
Nov 03 PHP
php从完整文件路径中分离文件目录和文件名的方法
Mar 13 PHP
php采用session实现防止页面重复刷新
Dec 24 PHP
PHP实现添加购物车功能
Mar 06 PHP
PHP面向对象程序设计继承用法简单示例
Dec 28 PHP
PHP var关键字相关原理及使用实例解析
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中文分词的简单实现代码分享
2011/07/17 PHP
php中选择什么接口(mysql、mysqli)访问mysql
2013/02/06 PHP
php 输出json及显示json中的中文汉字详解及实例
2016/11/09 PHP
PHP面向对象程序设计OOP继承用法入门示例
2016/12/27 PHP
PHP常用函数之获取汉字首字母功能示例
2019/10/21 PHP
PHP强制转化的形式整理
2020/05/22 PHP
慎用 somefunction.prototype 分析
2009/06/02 Javascript
JavaScript 继承的实现
2009/07/09 Javascript
JavaScript 对象的属性和方法4种不同的类型
2010/03/19 Javascript
jquery ajax 同步异步的执行示例代码
2010/06/23 Javascript
javascript为按钮注册回车事件(设置默认按钮)的方法
2015/05/09 Javascript
jQuery中attr()与prop()函数用法实例详解(附用法区别)
2015/12/29 Javascript
详解Angularjs中的依赖注入
2016/03/11 Javascript
Vue 2.0在IE11中打开项目页面空白的问题解决
2017/07/16 Javascript
vue组件 $children,$refs,$parent的使用详解
2017/07/31 Javascript
使用Vue如何写一个双向数据绑定(面试常见)
2018/04/20 Javascript
nodejs实现套接字服务功能详解
2018/06/21 NodeJs
vue3.0 CLI - 2.4 - 新组件 Forms.vue 中学习表单
2018/09/14 Javascript
微信小程序如何修改radio和checkbox的默认样式和图标
2019/07/24 Javascript
js实现移动端吸顶效果
2020/01/08 Javascript
[51:39]DOTA2-DPC中国联赛 正赛 Magma vs LBZS BO3 第二场 2月7日
2021/03/11 DOTA
[10:05]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD 选手采访
2021/03/11 DOTA
Python 3.x 连接数据库示例(pymysql 方式)
2017/01/19 Python
python3中set(集合)的语法总结分享
2017/03/24 Python
正确理解python中的关键字“with”与上下文管理器
2017/04/21 Python
Python实现字符串逆序输出功能示例
2017/06/24 Python
python3 实现对图片进行局部切割的方法
2018/12/05 Python
pandas按行按列遍历Dataframe的几种方式
2019/10/23 Python
python为QT程序添加图标的方法详解
2020/03/09 Python
websocket+sockjs+stompjs详解及实例代码
2018/11/30 HTML / CSS
HTML5语义化元素你真的用对了吗
2019/08/22 HTML / CSS
国外最大的眼镜网站:Coastal
2017/08/09 全球购物
Room Mate Hotels美国:西班牙酒店品牌
2018/04/10 全球购物
简历上的自我评价怎么写
2014/01/28 职场文书
《冬阳童年骆驼队》教学反思
2014/04/15 职场文书
2019年鼓励无偿献血倡议书
2019/09/17 职场文书