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自定义函数返回多个值
Nov 26 PHP
Linux下进行MYSQL编程时插入中文乱码的解决方案
Mar 15 PHP
php笔记之:文章中图片处理的使用
Apr 26 PHP
教你如何使用php session
Oct 28 PHP
Yii核心组件AssetManager原理分析
Dec 02 PHP
Zend Framework自定义Helper类相关注意事项总结
Mar 14 PHP
round robin权重轮循算法php实现代码
May 28 PHP
Thinkphp框架开发移动端接口(2)
Aug 18 PHP
PHP数组内存利用率低和弱类型详细解读
Aug 10 PHP
详解PHP序列化和反序列化原理
Jan 15 PHP
CI框架(CodeIgniter)操作redis的方法详解
Jan 25 PHP
让Laravel API永远返回JSON格式响应的方法示例
Sep 05 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
SONY ICF-SW7600的电路分析
2021/03/02 无线电
用DBSQL类加快开发MySQL数据库程序的速度
2006/10/09 PHP
php 魔术函数使用说明
2010/02/21 PHP
PHP备份数据库生成SQL文件并下载的函数代码
2012/02/05 PHP
php检测数组长度函数sizeof与count用法
2014/11/17 PHP
php中的explode()函数实例介绍
2019/01/18 PHP
解决Laravel自定义类引入和命名空间的问题
2019/10/15 PHP
jQuery数据显示插件整合实现代码
2011/10/24 Javascript
JS关闭窗口或JS关闭页面的几种代码分享
2013/10/25 Javascript
JavaScript检测上传文件大小的方法
2015/07/22 Javascript
JS实现选择TextArea内文本的方法
2015/08/03 Javascript
JS实现完全语义化的网页选项卡效果代码
2015/09/15 Javascript
jQuery实现折叠、展开的菜单组效果代码
2015/09/16 Javascript
jQuery插件之jQuery.Form.js用法实例分析(附demo示例源码)
2016/01/04 Javascript
浅析jquery数组删除指定元素的方法:grep()
2016/05/19 Javascript
AngularJS基础 ng-keypress 指令简单示例
2016/08/02 Javascript
js 调用百度分享功能
2017/02/27 Javascript
ztree简介_动力节点Java学院整理
2017/07/19 Javascript
jquery之基本选择器practice(实例讲解)
2017/09/30 jQuery
用vuex写了一个购物车H5页面的示例代码
2018/12/04 Javascript
Node.js + express基本用法教程
2019/03/14 Javascript
javascript实现视频弹幕效果(两个版本)
2019/11/28 Javascript
python操作字典类型的常用方法(推荐)
2016/05/16 Python
python django 增删改查操作 数据库Mysql
2017/07/27 Python
Python数据结构与算法之链表定义与用法实例详解【单链表、循环链表】
2017/09/28 Python
Python-ElasticSearch搜索查询的讲解
2019/02/25 Python
Python基础之列表常见操作经典实例详解
2020/02/26 Python
在python image 中实现安装中文字体
2020/05/16 Python
美国医疗用品、医疗设备和家庭保健用品商店:Medical Supply Depot
2018/07/08 全球购物
美国在线打印网站:Overnight Prints
2018/10/11 全球购物
编辑求职信样本
2013/12/16 职场文书
端午节粽子促销活动方案
2014/02/02 职场文书
汽车维修工岗位职责
2014/02/12 职场文书
《难忘的泼水节》教学反思
2014/02/27 职场文书
廉洁校园实施方案
2014/05/25 职场文书
纪检干部现实表现材料
2014/08/21 职场文书