php主文件,php – zip主文件夹里面有子文件夹

我有一个文件夹,里面有一些文件和子文件夹.我如何阅读目录并压缩主文件夹?

例如:

maindirectory

--- file 1

--- file 2

--- subdirectory 1

------ file 3

------ file 4

--- subdirectory 2

------ file 5

------ file 6

我正在使用这个脚本:

function Zip($source, $destination, $include_dir = false)

{

if (!extension_loaded('zip') || !file_exists($source)) {

return false;

}

if (file_exists($destination)) {

unlink ($destination);

}

$zip = new ZipArchive();

if (!$zip->open($destination, ZIPARCHIVE::CREATE)) {

return false;

}

$source = str_replace('\\', '/', realpath($source));

if (is_dir($source) === true)

{

$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source), RecursiveIteratorIterator::SELF_CHILD);

if ($include_dir) {

$arr = explode("/",$source);

$maindir = $arr[count($arr)- 1];

$source = "";

for ($i=0; $i < count($arr) - 1; $i++) {

$source .= '/' . $arr[$i];

}

$source = substr($source, 1);

$zip->addEmptyDir($maindir);

}

foreach ($files as $file)

{

$file = str_replace('\\', '/', $file);

// Ignore "." and ".." folders

if( in_array(substr($file, strrpos($file, '/')+1), array('.', '..')) )

continue;

$file = realpath($file);

if (is_dir($file) === true)

{

$zip->addEmptyDir(str_replace($source . '/', '', $file . '/'));

}

else if (is_file($file) === true)

{

$zip->addFromString(str_replace($source . '/', '', $file), file_get_contents($file));

}

}

}

else if (is_file($source) === true)

{

$zip->addFromString(basename($source), file_get_contents($source));

}

return $zip->close();

}

我把这个函数调成这样:

Zip('image/data/','aaa.zip',false);

但我得到的是它压缩整个C:文件夹.我想要的是只在zip / data /文件夹中压缩文档.

如何格式化正确的目录及其子目录?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值