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

5年以前  |  阅读数:430 次  |  编程语言:PHP 

本文实例为大家分享了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分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例