• 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 ();
    }
    
    ?>
  • 相关阅读:
    「BZOJ1061」 [Noi2008]志愿者招募
    [POJ 2891] Strange Way to Express Integers (扩展中国剩余定理)
    扩展中国剩余定理学习笔记
    扩展欧几里得算法+推论
    SPOJ16607 IE1
    [Luogu P4124] [CQOI2016]手机号码 (数位DP)
    [UOJ 275/BZOJ4737] 【清华集训2016】组合数问题 (LUCAS定理的运用+数位DP)
    一些很妙的网站
    [Luogu P3157][CQOI2011]动态逆序对 (树套树)
    [Luogu P3203] [HNOI2010]弹飞绵羊 (LCT维护链的长度)
  • 原文地址:https://www.cnblogs.com/zonglonglong/p/6722232.html
Copyright © 2020-2023  润新知