Я столкнулся с небольшой проблемой при архивировании файлов в 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, структура файлов выглядит так:
папка / папка2 / file1.jpg
папка / file2.jpg
папка / папка2 / папка3 / file3.jpg
Мой вопрос заключается в том, можно ли в PHP разместить все файлы в корне zip и игнорировать данную структуру. Таким образом, извлеченные файлы будут выглядеть так:
/ file1.jpg
/file2.jpg
/file3.jpg
Единственное решение, которое я мог придумать, это переместить все файлы в папку и затем сжать эту папку, но это выглядело как излишнее.