关于文件下载

  以下就是一个文件下载系统,我把它简单的封装成一个函数;

    fuction file_down( $file_name ){

      $file_name = iconv( " utf-8 " , " gb2312 " , $file_name );    //这里把uft-8转成gb2313码,因为中文文件名的关系;

      $file_path = $_SERVER[ ' DOCUMENT_ROOT ' ] . / xxx / . $file_name ;   //这里定义绝对路径,有需要也可以改成相对路径;

      if( ! file_exists( $file_path ) ){

        die( " 文件不存在 " );                //这里判断文件是否存在,不存在则结束;

      }

      $fp = fopen( $file_path , " r " ) ;              //以只读的方式打开文件;

      $file_size = filesize( $file_path ) ;             //获取文件大小;

 

      header( ” Content-Type:application/octet-stream “ );    //以文件形式返回数据;

      header( " Accept-Ranges: bytes " );            //以字节大小返回数据;

      header( " Accept-Length: $file_size " );         //返回文件的大小;

      header( " Content-Disposition: attachment ; filename=$file_name " ) ;   //客户端下载弹出框所对应的名称;

 

      //向客户端回送数据;

      $buffer = 1024 ;               //这里定义一个控制每次下载字节的数量;

 

      //这句话用于判断文件是否结束;feof函数会判断指针是否到文件最后的位置;

      while( feof( $fp ) ){

        fread( $fp , $buffer ) ;          //以每次输送$buffer数量的字节传输;

      }

      fcolse( $fp );               //关闭文件;

    }

  

posted @ 2018-04-11 10:12  private袜子  阅读(209)  评论(0编辑  收藏  举报