рекурсия — с помощью PHP рекурсивно разархивировать папку в заархивированной папке?

Я пытаюсь разархивировать папку в PHP и сделать что-то с файлами. У меня это работает нормально, но мне нужно, чтобы это работало для заархивированных папок внутри корня заархивированной папки.

Таким образом, zipped1 может содержать image1 и zipped2. Мне нужно извлечь zip2, а также. Я пытаюсь сделать это с помощью рекурсии, как показано ниже. Очевидно, что это не полный код, а соответствующие биты.

$tempFile = $_FILES['Filedata']['tmp_name'];
function handle_zip($ZipHandler)
{
while($zip_entry = zip_read($ZipHandler))
{
$ext = explode(".",zip_entry_name($zip_entry))[1];
if($ext=="zip")
handle_zip(zip_open($zip_entry));
}
}
$ZipHandler = zip_open($tempFile);
handle_zip($ZipHandler);
zip_close($ZipHandler);

Таким образом, проблема заключается в том, что при рекурсивном вызове функции необходимо отправить файл в качестве аргумента, но zip_open, похоже, открывает загруженные файлы в их временной папке на сервере — и этот рекурсивный пакет не находится в этой временной папке.

Что я могу сделать, пожалуйста?

0

Решение

Я не пробовал это, но вы могли бы попробовать

zip_entry_open($zip_entry,$entry);
handle_zip(zip_open($entry));

в рекурсивном вызове. это это соответствующая страница документа.

Также вы можете захотеть получить последнюю часть разнесенного результата вместо второй, если в имени файла указано несколько точек или их нет.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]