在PHP中压缩文件时删除目录结构
我在用PHP压缩文件时遇到了一点问题。我有一个函数,它可以压缩一系列文件,这些文件都在不同的目录中。该函数如下所示:在PHP中压缩文件时删除目录结构,php,directory,zip,Php,Directory,Zip,我在用PHP压缩文件时遇到了一点问题。我有一个函数,它可以压缩一系列文件,这些文件都在不同的目录中。该函数如下所示: function create_zip($files = array(),$destination = '',$overwrite = false,$add_to_db=true) { print_r($files); $zip = new ZipArchive(); if($zip->open($destination,$overw
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;
}
}
我的问题是,是否可以让PHP将所有文件放在zip的根目录中,而忽略给定的结构。因此,提取的文件如下所示:
/file1.jpg
/file2.jpg
/file3.jpg
我能想到的唯一解决方案是将所有文件移动到一个文件夹中,然后压缩此文件夹,但这似乎有些过分。只为第二个参数指定一个文件名(无路径)以addFile()
:
请注意,如果您尝试添加多个具有相同基名的文件(例如folder1/foo.jpg
和folder2/foo.jpg
),您将覆盖第一个文件,并且只有第二个文件最终会出现在zip文件中
/file1.jpg
/file2.jpg
/file3.jpg
$zip->addFile( $files[$i], basename($files[$i]) );