PHP将文件夹的文件压缩到Zip包里代码

发布于:2023-06-30 10:57    阅读次数:242    作者:云码素材    分类:技术分享    关键词:文件压缩  

PHP将文件夹的文件压缩到Zip包里代码


事情的经过是因为我正在写授权系统需要用到Zip相关的函数,因为Zip相关函数是PHP的扩展功能,之前没有了解过,还有太懒了一直拖着,

直到今天我才写出来实现相关功能。


以下是代码:

<?php
/*
 *云码素材版权所有
 */

# 将文件夹的文件压缩到文件里
class Zip
{
    /**
     * 将目标文件夹下的内容压缩到zip中(zip包含文件夹目录)
     * @param $sourcePath *文件夹路径 例: /home/test
     * @param $outZipPath *zip文件名(包含路径) 例: /home/zip_file/test.zip
     * @return string
     */
    public static function zipFolder($sourcePath, $outZipPath)
    {
        $parentPath = rtrim(substr($sourcePath, 0, strrpos($sourcePath, '/')),"/")."/";
        $dirName = ltrim(substr($sourcePath, strrpos($sourcePath, '/')),"/");

        $sourcePath=$parentPath.'/'.$dirName;//防止传递'folder'文件夹产生bug

        $z = new \ZipArchive();
        $z->open($outZipPath, \ZIPARCHIVE::CREATE);//建立zip文件
        $z->addEmptyDir($dirName);//建立文件夹
        folderToZip($sourcePath, $z, strlen("$parentPath/"));
        $z->close();
        return $outZipPath;
    }

    public static function folderToZip($folder, &$zipFile, $exclusiveLength)
    {
        $handle = opendir($folder);
        while (false !== $f = readdir($handle)) {
            if ($f != '.' && $f != '..') {
                $filePath = "$folder/$f";
                // 在添加到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);
    }
}




入群分享

我要加群:资源共享的时代,不要再单打独斗!加小编微信号加入群:xnynews(备注:云码素材入群),qq群号:202498279,一起技术学习,资源分享!

免责声明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络收集整理,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!

原创声明:本站所有资源如果标明原创的为云码素材已测试或原创开发项目,可提供有偿技术服务,如标明为收集,为网络收集资源,网路收集资源不提供任何技术支持和服务,网络虚拟资源,一经售出,概不退货,请购买前认真看清资源详情说明。

推荐源码
查看更多

热门文章

1反向词典网站wantwords

2022-05-10 08:48   浏览:30284

2Tik Tok 深田咏美抖音视频100+合集资源免费下载【绿色】

2022-10-31 08:42   浏览:18007

3NB Map-自动生成三维地图工具网站

2022-03-27 09:29   浏览:14481

4河南高速公路实时路况监控查询入口分享

2022-09-11 15:02   浏览:12414

5微信视频号封面的宽和高是多少 及录制视频的分辨率是多大

2020-04-13 15:31   浏览:11283

6免费使用chatgpt3种方式 chatgpt国内入口无需梯子

2023-04-23 17:52   浏览:9550

7三个开源的php论坛bbs源码 可自建 圈子 帖子社区网站!

2020-09-15 21:34   浏览:8420

8可爱的在线捏猫小游戏网站-NieMao

2022-09-08 10:28   浏览:8304

9thinkphp6如何引入extend第三方类库

2019-08-28 17:28   浏览:8261

1015个顶级学习资源网站 免费白嫖

2021-03-29 10:22   浏览:7211

下午时段云码素材正在优化细节,力求做一个人见人爱的“细节控”哦~

免费领
签到客服赚钱 反馈 回顶部
× Your Image

每天一个精品源码资源

汽车贴膜改色小程序源码 汽车配色小程序源码 车身改色app源码 带后台 带数据