【发布时间】:2011-07-10 19:27:35
【问题描述】:
我在 PHP 中压缩文件时遇到了一些问题。我有一个压缩文件数组的函数,这些文件都在不同的目录中。函数看起来像:
function create_zip($files = array(),$destination = '',$overwrite = false,$add_to_db=true) {
print_r($files);
$zip = new ZipArchive();
if($zip->open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) {
return false;
}
for($i=0;$i < count($files); $i++) {
//echo $files[$i].'<br>';
$zip->addFile($files[$i],$files[$i]);
}
$zip->close();
if(file_exists($destination)) {
// echo("Success");
if($add_to_db == true) { add_file($destination); }
return true;
} else {
//echo("Failed");
return false;
}
}
当用户下载并解压 zip 文件时,文件结构如下:
folder/folder2/file1.jpg
folder/file2.jpg
folder/folder2/folder3/file3.jpg
我的问题是,是否可以让 PHP 将所有文件放在 zip 的根目录中并忽略给定的结构。所以提取的文件看起来像:
/file1.jpg
/file2.jpg
/file3.jpg
我能想到的唯一解决方案是将所有文件移动到一个文件夹中,然后压缩该文件夹,但这似乎有点过头了。
【问题讨论】: