首页 > 编程语言 >php ZipArchive 压缩整个文件夹 - 自带ZipArchive类 - PHP递归创建目录压缩包

php ZipArchive 压缩整个文件夹 - 自带ZipArchive类 - PHP递归创建目录压缩包

时间:2023-01-28 15:13:58浏览次数:47  
标签:php RecursiveIteratorIterator zip filePath ZipArchive file var PHP

效果

保持目录结构,压缩整个文件夹为zip包

 

完整代码

<?php
    
/**
 * 压缩整个文件夹为zip文件
 */
function make_zip_file_for_folder ($zip_path = '', $folder_path = '') {
    // Get real path for our folder
    $rootPath = realpath($folder_path);
 
    // Initialize archive object
    $zip = new ZipArchive();
    $zip->open($zip_path, ZipArchive::CREATE | ZipArchive::OVERWRITE);
 
    // Create recursive directory iterator
    /** @var SplFileInfo[] $files */
    $files = new RecursiveIteratorIterator(
        new RecursiveDirectoryIterator($rootPath),
        RecursiveIteratorIterator::LEAVES_ONLY
    );
 
    foreach ($files as $name => $file)
    {
        // Skip directories (they would be added automatically)
        if (!$file->isDir())
        {
            // Get real and relative path for current file
            $filePath = $file->getRealPath();
            $relativePath = substr($filePath, strlen($rootPath) + 1);
 
            // Add current file to archive
            $zip->addFile($filePath, $relativePath);
        }
    }
 
    // Zip archive will be created only after closing object
    $zip->close();
}

 

使用方法

//RecursiveIteratorIterator 递归获取文件树(列表)

//$zip->addFile($filePath, $relativePath);  逐个添加文件到zip压缩包

$zip_file = '/var/www/abc.zip';

$zip_dir = '/var/www/abc/';

make_zip_file_for_folder($zip_file, $zip_dir);

 

标签:php,RecursiveIteratorIterator,zip,filePath,ZipArchive,file,var,PHP
From: https://www.cnblogs.com/mygaoge/p/17070326.html

相关文章

  • php开启ziparchive类,php压缩解压文件ZipArchive类的方法使用教程
    php中有一个ZipArchive类,可以用于文件的压缩与解压的操作,ZipArchive类的使用教程,可以查看下面的方法。phpZipArchive类使用方法1、声明一个ZipArchive类的使用方法$zi......
  • PHPMyWind编辑器支持Word上传
    ​ 图片的复制无非有两种方法,一种是图片直接上传到服务器,另外一种转换成二进制流的base64码目前限chrome浏览器使用首先以um-editor的二进制流保存为例:打开umeditor.j......
  • PHPMyWind编辑器支持Word一键上传
    ​ 如何做到ueditor批量上传word图片?1、前端引用代码<!DOCTYPE html PUBLIC "-//W3C//DTDXHTML1.0Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml......
  • PHP转Go实践:xjson解析神器「开源工具集」
    前言近期会更新一系列开源项目的文章,新的一年会和大家做更多的开源项目,也欢迎大家加入进来。xutil今天分享的文章源自于开源项目jinzaigo/xutil的封装。在封装过程中......
  • 在VMware17虚拟机上使用宝塔面板部署php项目
    自己做了一个php项目打算使用宝塔面板部署整体思路大概是:安装VM,使用CentOS7镜像(因为宝塔面板是在CentOS上开发的,使用CentOS兼容性更好)配置虚拟机静态IP部署项目一......
  • 浅谈PHP设计模式的访问者模式
    简介:访问者模式,属于行为型的设计模式。表示一个作用于某对象结构中的各元素的操作。它是你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。适用场景:类中......
  • upload-labs pass3,phpstudy中修改httpd.conf后无法解析.php3后缀。phpstudy中64与32系
    问题解决参考自:https://www.likecs.com/show-965809.html 注意:VC运行库(V14-x64)版本必须与Apache、PHP版本相同;VC就是MicrosoftVisualC++,可以通过控制面板查看否则......
  • 浅谈PHP设计模式的享元模式
    简介:享元模式,属于结构型的设计模式。运用共享技术有效地支持大量细粒度的对象。适用场景:具有相同抽象但是细节不同的场景中。优点:把公共的部分分离为抽象,细节依赖于抽......
  • 浅谈PHP设计模式的中介者模式
    简介:中介者模式,属于行为型的设计模式。用一个中介对象来封装一系列的对象交互。中介者是各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互。......
  • PHP获取微信JS-SDK接口设置(access_token、jsapi_ticket、signature)
    前端引入JS文件<scriptsrc="http://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>或<scriptsrc="http://res2.wx.qq.com/open/js/jweixin-1.6.0.js"></script......