48 lines
1.4 KiB
PHP
48 lines
1.4 KiB
PHP
<?php
|
|
|
|
namespace app\admin\controller\channel\wxapp;
|
|
|
|
use app\common\controller\Backend;
|
|
use ZipArchive;
|
|
/**
|
|
* 小鹅通
|
|
*/
|
|
class Package extends Backend
|
|
{
|
|
|
|
public function _initialize()
|
|
{
|
|
parent::_initialize();
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* 压缩
|
|
* @remark 递归将文件夹中的所有文件和子文件夹添加到压缩包中
|
|
* @param string $folderPath 文件夹路径
|
|
* @param ZipArchive $zip 压缩包实例
|
|
* @param string $parentFolder 父文件夹路径(用于保持相对路径)
|
|
*/
|
|
public function addFolderToZip($folderPath, $zip, $parentFolder = '') {
|
|
$handle = opendir($folderPath);
|
|
while (($file = readdir($handle)) !== false) {
|
|
if ($file != '.' && $file != '..') {
|
|
$filePath = $folderPath . '/' . $file;
|
|
|
|
if (is_file($filePath)) {
|
|
// 获取相对于父文件夹的路径
|
|
$relativePath = ltrim($parentFolder . '/' . $file, '/');
|
|
|
|
// 将文件添加到压缩包中,并使用相对路径作为在压缩包中的文件名
|
|
$zip->addFile($filePath, $relativePath);
|
|
} elseif (is_dir($filePath)) {
|
|
// 递归添加子文件夹中的文件和子文件夹
|
|
$this->addFolderToZip($filePath, $zip, $parentFolder . '/' . $file);
|
|
}
|
|
}
|
|
}
|
|
closedir($handle);
|
|
}
|
|
} |