PHP实现文件下载【实例分享】

 更新时间:2017年04月28日 14:59:20   作者:下页、再停留  
本篇文章主要介绍了PHP实现文件下载的示例代码。具有很好的参考价值。下面跟着小编一起来看下吧

话不多说,请看代码:

<?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 应用容器化以及部署方法

    本文给大家分享的是如何把PHP应用容器化,以及使用docker在服务器上部署PHP应用,非常的简单实用,有需要的小伙伴可以参考下
    2018-02-02
  • 浅谈apache和nginx的rewrite的区别

    浅谈apache和nginx的rewrite的区别

    浅谈apache和nginx的rewrite的区别,需要的朋友可以参考一下
    2013-02-02
  • php版阿里云OSS图片上传类详解

    php版阿里云OSS图片上传类详解

    这篇文章主要介绍了php版阿里云OSS图片上传类,结合具体实例形式分析了php版阿里云OSS图片上传类的功能、定义、使用方法与相关注意事项,需要的朋友可以参考下
    2016-12-12
  • CI框架(ajax分页,全选,反选,不选,批量删除)完整代码详解

    CI框架(ajax分页,全选,反选,不选,批量删除)完整代码详解

    CodeIgniter 是一个小巧但功能强大的 PHP 框架。这篇文章主要介绍了CI框架(ajax分页,全选,反选,不选,批量删除)完整代码,需要的朋友可以参考下
    2016-11-11
  • php实现redis数据库指定库号迁移的方法

    php实现redis数据库指定库号迁移的方法

    这篇文章主要介绍了php实现redis数据库指定库号迁移的方法,涉及对于redis数据库的操作技巧,非常具有实用价值,需要的朋友可以参考下
    2015-01-01
  • PHP跳出for循环中的break和continue

    PHP跳出for循环中的break和continue

    在PHP中,可以使用break关键字来跳出循环,,PHP中还可以使用continue关键字跳过本次循环并继续执行下一次循环,当循环执行到continue语句时,本次循环中continue之后的代码将不再执行,直接进入下一次循环
    2023-09-09
  • php实现的二叉树遍历算法示例

    php实现的二叉树遍历算法示例

    这篇文章主要介绍了php实现的二叉树遍历算法,结合具体实例形式分析了php针对二叉树的常用前序、中序及后序遍历算法实现技巧,需要的朋友可以参考下
    2017-06-06
  • PHP使用CURL模拟登录的方法

    PHP使用CURL模拟登录的方法

    本文给大家介绍的是PHP使用CURL模拟登录的方法,思路和其他模拟登陆的程序不同,有需要的小伙伴可以详细看下。
    2015-07-07
  • php函数间的参数传递(值传递/引用传递)

    php函数间的参数传递(值传递/引用传递)

    函数间的参数传递包括值传递和引用传递,详细示例接下来为大家详细介绍下,感兴趣的朋友不要错过
    2013-09-09
  • 浅谈thinkphp的实例化模型

    浅谈thinkphp的实例化模型

    这篇文章主要简单介绍了thinkphp的实例化模型的几种方法,以及他们之间的使用要点,非常不错,推荐给大家。
    2015-01-01

最新评论