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
杏林同学录(九)
Oct 09 PHP
PHP 表单提交给自己
Jul 24 PHP
PHP正确解析UTF-8字符串技巧应用
Nov 07 PHP
PHP的curl实现get,post和cookie(实例介绍)
Jun 17 PHP
php实现图片转换成ASCII码的方法
Apr 03 PHP
Zend Framework教程之Zend_Helpers动作助手ViewRenderer用法详解
Jul 20 PHP
thinkPHP5.0框架开发规范简介
Mar 25 PHP
利用php获得flv视频长度的实例代码
Oct 26 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
Nov 17 PHP
ThinkPHP5 框架引入 Go AOP,PHP AOP编程项目详解
May 12 PHP
eval(cmd)与eval($cmd)的区别与联系
Jul 07 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写的基于Memcache的Queue实现代码
2011/11/27 PHP
PHP CURL CURLOPT参数说明(curl_setopt)
2013/09/30 PHP
YII实现分页的方法
2014/07/09 PHP
PHP多文件上传类实例
2015/03/07 PHP
php运行报错Call to undefined function curl_init()的最新解决方法
2016/11/20 PHP
浅谈PHP中pack、unpack的详细用法
2018/03/12 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
2020/04/04 PHP
JavaScript Array扩展实现代码
2009/10/14 Javascript
YUI的Tab切换实现代码
2010/04/11 Javascript
关于window.pageYOffset和document.documentElement.scrollTop
2011/04/05 Javascript
jQuery动态添加 input type=file的实现代码
2012/06/14 Javascript
javascript:window.open弹出窗口的位置问题
2014/03/18 Javascript
js中键盘事件实例简析
2015/01/10 Javascript
js文本框走动跑马灯效果代码分享
2015/08/25 Javascript
聊一聊JS中this的指向问题
2016/06/17 Javascript
Angular中支持SCSS的方法
2017/11/18 Javascript
Koa2 之文件上传下载的示例代码
2018/03/29 Javascript
详解vue在项目中使用百度地图
2019/03/26 Javascript
js实现带有动画的返回顶部
2020/08/09 Javascript
Vue实现简单计算器
2021/01/20 Vue.js
深入理解Python中的元类(metaclass)
2015/02/14 Python
python中matplotlib实现最小二乘法拟合的过程详解
2017/07/11 Python
numpy中实现二维数组按照某列、某行排序的方法
2018/04/04 Python
python画图系列之个性化显示x轴区段文字的实例
2018/12/13 Python
Python3 Tkinkter + SQLite实现登录和注册界面
2019/11/19 Python
在notepad++中实现直接运行python代码
2019/12/18 Python
Win10里python3创建虚拟环境的步骤
2020/01/31 Python
详解PyQt5信号与槽的几种高级玩法
2020/03/24 Python
CSS3 真的会替代 SCSS 吗
2021/03/09 HTML / CSS
HTML5 Video/Audio播放本地文件示例介绍
2013/11/18 HTML / CSS
Web Service面试题:如何搭建Axis2的开发环境
2012/06/20 面试题
生物制药毕业生自荐信
2013/10/16 职场文书
秋季运动会广播稿大全
2014/02/17 职场文书
经贸专业毕业生求职信
2014/03/23 职场文书
计算机系本科生求职信
2014/05/31 职场文书
2016春季小学开学寄语
2015/12/03 职场文书