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发电子邮件
Oct 09 PHP
PHP语法速查表
Jan 02 PHP
php 远程图片保存到本地的函数类
Dec 08 PHP
php学习笔记 php中面向对象三大特性之一[封装性]的应用
Jun 13 PHP
PHP+MySQL投票系统的设计和实现分享
Sep 23 PHP
Thinkphp中的volist标签用法简介
Jun 18 PHP
php实现的css文件背景图片下载器代码
Nov 11 PHP
PHP中把对象转换为关联数组代码分享
Apr 09 PHP
Yii配置与使用memcached缓存的方法
Jul 13 PHP
PHP未登录自动跳转到登录页面
Dec 21 PHP
PHP利用百度ai实现文本和图片审核
May 08 PHP
Laravel统一错误处理为JSON的方法介绍
Oct 18 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
《神奇女侠:血脉》神力女超人大战犯罪公司
2020/04/09 欧美动漫
smarty缓存用法分析
2014/12/16 PHP
php图片水印添加、压缩、剪切的封装类实现
2020/04/18 PHP
PHP实现的简单路由和类自动加载功能
2018/03/13 PHP
修复ie8&amp;chrome下window的resize事件多次执行
2011/10/20 Javascript
浅析js中取绝对值的2种方法
2013/07/09 Javascript
Javascript之this关键字深入解析
2013/11/12 Javascript
HTML页面登录时的JS验证方法
2014/05/28 Javascript
JS函数this的用法实例分析
2015/02/05 Javascript
JS+CSS实现Div弹出窗口同时背景变暗的方法
2015/03/04 Javascript
基于jquery实现无限级树形菜单
2016/03/22 Javascript
基于jQuery实现仿微博发布框字数提示
2016/07/27 Javascript
Node.js中如何合并两个复杂对象详解
2016/12/31 Javascript
在javascript中,null>=0 为真,null==0却为假,null的值详解
2017/02/22 Javascript
解决Layui 表单提交数据为空的问题
2018/08/15 Javascript
微信提示 在浏览器打开 效果实现过程解析
2019/09/10 Javascript
python分割文件的常用方法
2014/11/01 Python
浅析Python3中的对象垃圾收集机制
2019/06/06 Python
python写入文件自动换行问题的方法
2019/07/05 Python
python numpy 常用随机数的产生方法的实现
2019/08/21 Python
python设置随机种子实例讲解
2019/09/12 Python
Python3使用xlrd、xlwt处理Excel方法数据
2020/02/28 Python
python实现UDP协议下的文件传输
2020/03/20 Python
Python3.7将普通图片(png)转换为SVG图片格式(网站logo图标)动起来
2020/04/21 Python
Python 私有属性和私有方法应用场景分析
2020/06/19 Python
纯CSS打造(无图像无js)的非常流行的讲话(语音)气泡效果
2012/12/28 HTML / CSS
Skyscanner波兰:廉价航班
2017/11/07 全球购物
介绍一下JNDI的基本概念
2013/07/26 面试题
成立公司计划书
2014/05/07 职场文书
2014年党员承诺书范文
2014/05/20 职场文书
社会稳定风险评估方案
2014/06/02 职场文书
综合素质评价自我评价
2015/03/06 职场文书
创业计划书之酒厂
2019/10/14 职场文书
JavaScript 语句之常用 for 循环详解
2021/03/29 Javascript
Django使用channels + websocket打造在线聊天室
2021/05/20 Python
Python使用Kubernetes API访问集群
2021/05/30 Python