удалить структуру каталогов при архивировании файлов в PHP - PullRequest
7 голосов
/ 08 марта 2011

Я столкнулся с небольшой проблемой при архивировании файлов в 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

Единственное решение, которое я мог придумать, это переместить все файлы в папку и затем сжать эту папку, но это выглядело как излишнее.

1 Ответ

7 голосов
/ 08 марта 2011

Нашел ответ в другом вопросе

php создает zip без пути к файлам внутри zip

...