Чтение имен файлов из zip-файла внутри другого zip-файла - PullRequest
0 голосов
/ 13 сентября 2018

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

По какой-то причине он всегда отказывается открывать включенный zip-файл, как будто он не распознает его как zip-файл. Чтобы быть на 100% уверенным, что это почтовый индекс для тестирования, я просто включил тот же самый почтовый индекс в основной почтовый индекс. Хотя он правильно читает основной zip-файл, он возвращает false, если я хочу прочитать включенный файл.

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

Это скрипт, который я использую для чтения содержимого zip-файла:

function firstzipper($file) {

    global $filesroot, $pagefile;
    $zipinc = new ZipArchive();
    if ($zipinc->open($file) === TRUE) {
        for ($i = 0; $i < $zipinc->numFiles; $i++) {
            $filename_full = $zipinc->getNameIndex($i);
            $filename = substr($filename_full, strrpos($filename_full, '/') + 1);
            if (!is_dir($filename)) {
                $filename = filter_var($filename, FILTER_SANITIZE_STRING);
                $ext = pathinfo($filename, PATHINFO_EXTENSION);
                if ($ext == 'zip') {
                    secondzipper($filesroot.$pagefile.'/'.$filename_full);
                }
            }
            array_push($inc_files_arr,$filename);
        }
        return $inc_files_arr;
    }

}

firstzipper ($ filesroot $ URL.);

secondzipper внутри функции выше - это просто та же функция, скопированная и переименованная.

Zip-файл выглядит так: E: /myfolder/fileserver/temper.zip/myincluded.zip

Функция открывает файл temper.zip, но возвращает myincluded.zip, значение false.

Надеюсь, я включил всю необходимую информацию, если нет, дайте мне знать, и я добавлю, что еще требуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...