сжатие — распакуйте подкаталог с помощью переполнения стека

У меня есть почтовый файл с подкаталогами внутри. Я использую php extractTo() функция, чтобы распаковать его, но я получаю только файлы из корня, я не могу получить файлы внутри подкаталогов.

Мой Zip-файл имеет такую ​​структуру:

-Json
- 01.json
- 02.json
- 03.json
- URL
- url1.json
- url2.json
- seeker
- seek1.json
- seek.json

И мой код:

$zip = new ZipArchive();
$zip->open($nombrezip);
$zip->extractTo($destino);
$zip->close();

Поэтому мне нужно распаковать файлы внутри «URL» и «ищущий».

1

Решение

Допустим, у вас есть ZipFile: test.zip

Состав:

- file1.txt
- file1.txt
- - dir1/
- - - file3.txt
- - - file4.txt
- - dir2/
- - - file5.txt
- - - file6.txt

Чтобы сохранить структуру ZIP, вы можете сделать:

<?php
$zip = new ZipArchive;
$res = $zip->open('test.zip');
if ($res === TRUE) {
$zip->extractTo('./test', array('file1.txt', 'file2.txt'));
$zip->extractTo('./test', array('dir1/file3.txt', 'dir1/file4.txt'));
$zip->extractTo('./test', array('dir2/file5.txt', 'dir2/file6.txt'));
$zip->close();
echo 'ok';
} else {
echo 'failed';
}
?>

Это так же, как делать

<?php
$zip = new ZipArchive;
$res = $zip->open('test.zip');
if ($res === TRUE) {
$zip->extractTo('./test');
$zip->close();
echo 'ok';
} else {
echo 'failed';
}
?>

Но если у вас есть test.zip файл с этой структурой:

- file1.txt
- file1.txt
- file3.txt
- file4.txt
- file5.txt
- file6.txt

И вы хотите структурировать вывод, как и раньше, вы можете сделать это:

<?php
$zip = new ZipArchive;
$res = $zip->open('test.zip');
if ($res === TRUE) {
$zip->extractTo('./test/', array('file1.txt', 'file2.txt'));
$zip->extractTo('./test/dir1', array('file3.txt', 'file4.txt'));
$zip->extractTo('./test/dir2', array('file5.txt', 'file6.txt'));
$zip->close();
echo 'ok';
} else {
echo 'failed';
}
?>
1

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

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

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