php操作zip文件

<?php
/*  使用方法
*  HZip::zipDir('yourlife', 'yourlife.zip');
*/
class HZip
{
    private static function folderToZip($folder, &$zipFile, $exclusiveLength) {
        $handle = opendir($folder);
        while (false !== $f = readdir($handle)) {
            if ($f != '.' && $f != '..') {
                    $filePath = "$folder/$f";
                            // Remove prefix from file path before add to zip.
                    $localPath = substr($filePath, $exclusiveLength);
                    if (is_file($filePath)) {
                        $zipFile->addFile($filePath, $localPath);
                    } elseif (is_dir($filePath)) {
                                // 添加子文件夹
                        $zipFile->addEmptyDir($localPath);
                        self::folderToZip($filePath, $zipFile, $exclusiveLength);
                }
          }
      }
      closedir($handle);
    }
        /**
        *压缩成zip包
        */
    public static function Doc_to_zip($sourcePath, $outZipPath)
    {
        $pathInfo = pathInfo($sourcePath);
        $parentPath = $pathInfo['dirname'];
        $dirName = $pathInfo['basename'];
        $sourcePath=$parentPath.'/'.$dirName;
            //防止传递'folder' 文件夹产生bug
        $z = new ZipArchive();
        $z->open($outZipPath, ZIPARCHIVE::CREATE);
            //建立zip文件
        $z->addEmptyDir($dirName);
            //建立文件夹
        self::folderToZip($sourcePath, $z, strlen("$parentPath/"));
        $z->close();
    }

    /**
     *解压zip包
     * @param string $file 压缩文件路径
     * @param string $path 解压路径,为空则以文件名为路径
     */
    public static function Zip_to_doc($file, $path = null)
    {
        if(!isset($path)){
            $array = explode('.',$file);
            $path = reset($array);
        }

        $zip = new ZipArchive();
        if($zip->open($file) === true){
            $zip->extractTo($path);
            $zip->close();
            return true;
        }
        return false;
    }
}

$zip = new HZip();
#将文件压缩成zip
//$zip::Doc_to_zip('../study','./new.zip');
#直接将压缩里的文件加压到指定的路径

#将zip包解压到制定目录
$zip::Zip_to_doc('./new.zip','.new/');
?>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值