PHP下载压缩包文件(zt)

2020-08-07 14:04:22  阅读 3348 次 评论 0 条


压缩文件

$zip = new ZipArchive();
// 打开一个zip文档,ZipArchive::OVERWRITE:如果存在这样的文档,则覆盖;ZipArchive::CREATE:如果不存在,则创建
$res = $zip->open('test.zip', ZipArchive::OVERWRITE | ZipArchive::CREATE);
if($res)
{
    // 添加 a.txt 到压缩文档
    $zip->addFile('a.txt');
    // 添加一个字符串到压缩文档中的b.txt
    $zip->addFromString('b.txt', 'this is b.txt');
    // 添加一个空目录b到压缩文档
    $zip->addEmptyDir('b');
}
// 关闭打开的压缩文档
$zip->close();


压缩文件夹

 /**
 * @param $dir 目标目录路径
  * @param $zip ZipArchive类对象
  * @param $prev
  */
 function compressDir($dir, $zip, $prev='.')
  {
      $handler = opendir($dir);
      $basename = basename($dir);
     $zip->addEmptyDir($prev . '/' . $basename);
     while($file = readdir($handler))
     {
         $realpath = $dir . '/' . $file;
         if(is_dir($realpath))
         {
             if($file !== '.' && $file !== '..')
             {
                 $zip->addEmptyDir($prev . '/' . $basename . '/' . $file);
                 compressDir($realpath, $zip, $prev . '/' . $basename);
             }
         }else
         {
             $zip->addFile($realpath, $prev. '/' . $basename . '/' . $file);
         }
     }

     closedir($handler);
     return null;
 }

 $zip = new ZipArchive();
 $res = $zip->open('test.zip', ZipArchive::OVERWRITE | ZipArchive::CREATE);
 if($res)
 {
     compressDir('./test', $zip);
     $zip->close();
 }

解压缩

$zip = new ZipArchive();
$res = $zip->open('test1.zip');
if($res)
{
    // 解压缩文件到指定目录
    $zip->extractTo('test');
    $zip->close();
}

下载

header('Content-Type:text/html;charset=utf-8');
header('Content-disposition:attachment;filename=test.zip');
$filesize = filesize('./test.zip');
readfile('./test.zip');
header('Content-length:'.$filesize);

unlink('./test.zip');


本文地址:https://jinesc.net/?id=176
版权声明:本文为原创文章,版权归 jinesc 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

还没有留言,还不快点抢沙发?