php::使用ZipArchive扩展压缩文件并下载demo

php版本>=5.2 ,zip扩展版本>=1.1.0

//$zip_file 压缩包路径,$files 需要加入压缩包的文件路径
function file_download($zip_file,$files)
{
  //创建压缩包
  $zip = new ZipArchive;
  if($zip->open($_SERVER['DOCUMENT_ROOT'].$zip_file, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE )===true){   
    foreach($files as $val){ 
        if(file_exists($_SERVER['DOCUMENT_ROOT'].$val)){
            //将文件加入到压缩包
            $zip->addFile($_SERVER['DOCUMENT_ROOT'].$val,array_pop(explode("/",$val)));
        }
    }
    $zip->close();
    //开始下载
    $file_name = $_SERVER['DOCUMENT_ROOT'] . $zip_file; //需要下载的文件
    header ( "Cache-Control: max-age=0" );
    header ( "Content-Description: File Transfer" );
    header ( 'Content-disposition: attachment; filename=' . basename ( $file_name ) ); // 文件名
    header ( "Content-Type: application/zip" ); // zip格式的
    header ( "Content-Transfer-Encoding: binary" ); // 告诉浏览器,这是二进制文件
    header ( 'Content-Length: ' . filesize ( $file_name ) ); // 告诉浏览器,文件大小
    @readfile ( $file_name );//输出文件;
   }else{
    return false;
   } 
}

说明文档:http://be2.php.net/manual/zh/class.ziparchive.php

你可能感兴趣的:(php::使用ZipArchive扩展压缩文件并下载demo)