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将数据库中的电话号码读取出来并生成图片
Aug 31 PHP
php 将字符串按大写字母分隔成字符串数组
Apr 30 PHP
Apache 配置详解(最好的APACHE配置教程)
Jul 04 PHP
apache mysql php 源码编译使用方法
May 03 PHP
php适配器模式介绍
Aug 14 PHP
php可扩展的验证类实例(可对邮件、手机号、URL等验证)
Jul 09 PHP
PHP使用Pthread实现的多线程操作实例
Nov 14 PHP
PHP 获取指定地区的天气实例代码
Feb 08 PHP
yii2 url重写并隐藏index.php方法
Dec 10 PHP
YII2框架中日志的配置与使用方法实例分析
Mar 18 PHP
PHP Trait功能与用法实例分析
Jun 03 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 获取一个月第一天与最后一天的代码
2010/05/16 PHP
php知道与问问的采集插件代码
2010/10/12 PHP
PHP面向接口编程 耦合设计模式 简单范例
2011/03/23 PHP
php数组函数序列之rsort() - 对数组的元素值进行降序排序
2011/11/02 PHP
php获取目录所有文件并将结果保存到数组(实例)
2013/10/25 PHP
php获取文件大小的方法
2014/02/26 PHP
php调用c接口无错版介绍
2014/03/11 PHP
php安装ssh2扩展的方法【Linux平台】
2016/07/20 PHP
PHP目录与文件操作技巧总结(创建,删除,遍历,读写,修改等)
2016/09/11 PHP
CodeMirror2 IE7/IE8 下面未知运行时错误的解决方法
2012/03/29 Javascript
使用postMesssage()实现跨域iframe页面间的信息传递方法
2016/03/29 Javascript
简单实现jQuery级联菜单
2017/01/09 Javascript
微信小程序实现登录页云层漂浮的动画效果
2017/05/05 Javascript
详解Vue.js分发之作用域槽
2017/06/13 Javascript
EasyUI在Panel上动态添加LinkButton按钮
2017/08/11 Javascript
微信小程序自定义导航教程(兼容各种手机)
2018/12/12 Javascript
微信小程序 image组件遇到的问题
2019/05/28 Javascript
VUE单页面切换动画代码(全网最好的切换效果)
2019/10/31 Javascript
javascript设计模式 ? 模板方法模式原理与用法实例分析
2020/04/23 Javascript
[55:03]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第二场 11.20
2020/11/20 DOTA
详解Python程序与服务器连接的WSGI接口
2015/04/29 Python
python3大文件解压和基本操作
2017/12/15 Python
python画图系列之个性化显示x轴区段文字的实例
2018/12/13 Python
Django 自定义分页器的实现代码
2019/11/24 Python
Python如何实现邮件功能
2020/05/27 Python
PyTorch 中的傅里叶卷积实现示例
2020/12/11 Python
精伦电子Java笔试题
2013/01/16 面试题
环境卫生标语
2014/06/09 职场文书
2014年团总支工作总结
2014/11/21 职场文书
2014年勤工助学工作总结
2014/11/24 职场文书
买卖合同纠纷代理词
2015/05/25 职场文书
重阳节活动主持词
2015/07/04 职场文书
Windows下使用Nginx+Tomcat做负载均衡的完整步骤
2021/03/31 Servers
python如何获取网络数据
2021/04/11 Python
Python制作动态字符画的源码
2021/08/04 Python
windows server2008 开启端口的实现方法
2022/06/25 Servers