• 技术文章 >后端开发 >php教程

    php利用header函数下载各种文件

    高洛峰高洛峰2016-12-23 12:47:52原创551
    本文实例为大家分享了php header函数下载文件实现代码,供大家参考,具体内容如下

    http://www.php.net/manual/en/function.readfile.php

    <?php
    /**
    * 下载文件
    * header函数
    *
    */
     
     
    dl_file($_GET ['filename']);
     
    function dl_file($file)
    {
     $file = ".//images//" . $file;
     //First, see if the file exists
      
     if (! is_file ( $file ))
     {
      die ( "<b>404 File not found!</b>" );
     }
      
     // Gather relevent info about file
     $len = filesize ( $file );
     $filename = basename ( $file );
     $file_extension = strtolower ( substr ( strrchr ( $filename, "." ), 1 ) );
      
     // This will set the Content-Type to the appropriate setting for the file
     switch ($file_extension)
     {
      case "pdf" :
       $ctype = "application/pdf";
       break;
      case "exe" :
       $ctype = "application/octet-stream";
       break;
      case "zip" :
       $ctype = "application/zip";
       break;
      case "doc" :
       $ctype = "application/msword";
       break;
      case "xls" :
       $ctype = "application/vnd.ms-excel";
       break;
      case "ppt" :
       $ctype = "application/vnd.ms-powerpoint";
       break;
      case "gif" :
       $ctype = "image/gif";
       break;
      case "png" :
       $ctype = "image/png";
       break;
      case "jpeg" :
      case "jpg" :
       $ctype = "image/jpg";
       break;
      case "mp3" :
       $ctype = "audio/mpeg";
       break;
      case "wav" :
       $ctype = "audio/x-wav";
       break;
      case "mpeg" :
      case "mpg" :
      case "mpe" :
       $ctype = "video/mpeg";
       break;
      case "mov" :
       $ctype = "video/quicktime";
       break;
      case "avi" :
       $ctype = "video/x-msvideo";
       break;
       
      // The following are for extensions that shouldn't be downloaded
      // (sensitive stuff, like php files)
      case "php" :
      case "htm" :
      case "html" :
      case "txt" :
       die ( "<b>Cannot be used for " . $file_extension . " files!</b>" );
       break;
       
      default :
       $ctype = "application/force-download";
     }
      
      
     $file_temp = fopen ( $file, "r" );
      
      
     // Begin writing headers
     header ( "Pragma: public" );
     header ( "Expires: 0" );
     header ( "Cache-Control: must-revalidate, post-check=0, pre-check=0" );
     header ( "Cache-Control: public" );
     header ( "Content-Description: File Transfer" );
     // Use the switch-generated Content-Type
     header ( "Content-Type: $ctype" );
     // Force the download
     $header = "Content-Disposition: attachment; filename=" . $filename . ";";
     header ( $header );
     header ( "Content-Transfer-Encoding: binary" );
     header ( "Content-Length: " . $len );
      
      
     //@readfile ( $file );
     echo fread ( $file_temp, filesize ( $file ) );
     fclose ( $file_temp );
      
     exit ();
    }
     
    ?>

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持PHP中文网。

    更多php利用header函数下载各种文件相关文章请关注PHP中文网!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:header
    上一篇:PHP中explode函数和split函数的区别小结 下一篇:PHP sleep()函数, usleep()函数
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• php简单实现查询数据库返回json数据_PHP教程• thinkphp中空模板与空模块的用法实例,thinkphp中空_PHP教程• php将session放入memcached的设置方法_PHP教程• PHP之APC缓存详细介绍 apc模块安装_PHP教程• 如何调用这个JS?_PHP教程
    1/1

    PHP中文网