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 文件扩展名 获取函数
Jun 03 PHP
PHP面向对象分析设计的61条军规小结
Jul 17 PHP
使用array mutisort 实现按某字段对数据排序
Jun 18 PHP
通过table标签,PHP输出EXCEL的实现方法
Jul 24 PHP
PHPAnalysis中文分词类详解
Jun 13 PHP
3款值得推荐的微信开发开源框架
Oct 28 PHP
Laravel中使用自己编写类库的3种方法
Feb 10 PHP
php导出中文内容excel文件类实例
Jul 06 PHP
php 解决扫描二维码下载跳转问题
Jan 13 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
Sep 16 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
Dec 21 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数组实例详解
2016/06/26 PHP
详解Yii实现分页的两种方法
2017/01/14 PHP
深入研究PHP中的preg_replace和代码执行
2018/08/15 PHP
PHP fopen函数用法实例讲解
2019/02/15 PHP
比较简单实用的使用正则三种版本的js去空格处理方法
2007/11/18 Javascript
Nodejs学习笔记之Global Objects全局对象
2015/01/13 NodeJs
jQuery实现的在线答题功能
2015/04/12 Javascript
很酷的星级评分系统原生JS实现
2016/08/25 Javascript
JavaScript在控件上添加倒计时功能的实现代码
2017/07/04 Javascript
jQuery+Ajax请求本地数据加载商品列表页并跳转详情页的实现方法
2017/07/12 jQuery
vue.js框架实现表单排序和分页效果
2017/08/09 Javascript
js实现购物车功能
2018/06/12 Javascript
js微信分享接口调用详解
2019/07/23 Javascript
Vue实现按钮级权限方案
2019/11/21 Javascript
原生js实现下拉框选择组件
2021/01/20 Javascript
python实现代理服务功能实例
2013/11/15 Python
跟老齐学Python之总结参数的传递
2014/10/10 Python
python回调函数用法实例分析
2015/05/09 Python
老生常谈Python序列化和反序列化
2017/06/28 Python
Python网络编程之TCP套接字简单用法示例
2018/04/09 Python
jupyter notebook 增加kernel教程
2020/04/10 Python
使用K.function()调试keras操作
2020/06/17 Python
Python txt文件如何转换成字典
2020/11/03 Python
python sleep和wait对比总结
2021/02/03 Python
CSS3动画:5种预载动画效果实例
2017/04/05 HTML / CSS
浅谈Html5移动端ios/Android兼容性总结
2018/06/01 HTML / CSS
新闻学专业应届生求职信
2013/11/08 职场文书
给老师的道歉信
2014/01/11 职场文书
无偿献血倡议书
2014/04/14 职场文书
学校就业推荐信范文
2014/05/19 职场文书
世界读书日的活动方案
2014/08/20 职场文书
中国文明网向国旗敬礼活动精彩寄语2014
2014/09/27 职场文书
商铺门面租房协议书
2014/10/21 职场文书
2014年卫生保健工作总结
2014/12/08 职场文书
生产车间主任岗位职责
2015/04/08 职场文书
OpenCV-Python实现轮廓的特征值
2021/06/09 Python