注册 | 登录
欢迎注册会员

当前位置:首页 > 365体育官方中文版 > PHP技术 > 正文

php中使用head进行二进制流输出,让用户下载rar等文件的方法

来源:程序人生 【 】 浏览:833 添加日期:2016-09-14 21:30:27 我要评论(0)

在PHP的手册中,有如下的方法,可以让用户方便的下载rar或者其他类似的附件形式,不过这里居然涉及到了编码的问题,是这样的,我要传输一个rar附件给用户,首先是rar文件已经存放到服务器上面了,在给文件传输过程中取名的问题,总是在IE下面到用户端的时候,文件名是乱码,导致了文件类型无法识别,有点奇怪,文件名是UTF-8编码的,比如:“程序人生.rar”,是从数据库中获取出来的,输出转化为$filename = iconv('utf-8', 'gbk', $filename);,传递到用户端的时候,文件名就正常了。


function downloadFile( $fullPath ){ 
  // Must be fresh start 
  if( headers_sent() ) 
    die('Headers Sent'); 
  // Required for some browsers 
  if(ini_get('zlib.output_compression')) 
    ini_set('zlib.output_compression', 'Off'); 
  // File Exists? 
  if( file_exists($fullPath) ){ 

    // Parse Info / Get Extension 
    $fsize = filesize($fullPath); 
    $path_parts = pathinfo($fullPath); 
    $ext = strtolower($path_parts["extension"]); 

    // Determine Content Type 
    switch ($ext) { 
      case "pdf": $ctype="application/pdf"; break; 
      case "exe": $ctype="application/octet-stream"; break; 
      case "zip": $ctype="application/zip"; break; 
      case "rar": $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; 
      default: $ctype="application/force-download"; 
    } 
    header("Pragma: public"); // required 
    header("Expires: 0"); 
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
    header("Cache-Control: private",false); // required for certain browsers 
    header("Content-Type: $ctype"); 
    header("Content-Disposition: attachment; filename="".basename($fullPath)."";" ); 
    header("Content-Transfer-Encoding: binary"); 
    header("Content-Length: ".$fsize); 
    ob_clean(); 
    flush(); 
    readfile( $fullPath ); 
  } else 
    die('File Not Found'); 
}

 



你浏览的文章是 - 《php中使用head进行二进制流输出,让用户下载rar等文件的方法》!
文章出处:https://www.procedurelife.com/content/akkjde.html
0% (0)
0% (0)
评论0
游客
1 2