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

来源:互联网 发布:看视频网络不稳定 编辑:程序博客网 时间:2024/05/14 13:00
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 "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'); } 


0 0