Создаём zip-архив средствами PHP
ZIP-архивирование на сайте - тема уже довольно популярная. Не буду Вас долго томить, сразу перейдём к закомментированному коду и пояснениям.
Алгоритм работы кода: открываем/создаём архив, добавляем файлы, закрываем.
Рассмотрим пример кода с комментариями:
Код PHP
<?php
$zip = new ZipArchive(); //Создаём объект для работы с ZIP-архивами
$zip->open("archive.zip", ZIPARCHIVE::CREATE); //Открываем (создаём) архив archive.zip
$zip->addFile("index.php"); //Добавляем в архив файл index.php
$zip->addFile("styles/style.css"); //Добавляем в архив файл styles/style.css
$zip->close(); //Завершаем работу с архивом
?>
Как результат, создание ZIP-архива - archive.zip. В который были загружены файлы index.php и styles/style.css. Как Вы понимаете, указывать нужно не просто название, а путь к файлу, который будет загружен в архив.
1. Создаём объект ZipArchive с помощью конструктора.
2. Создали архив с помощью метода open() объекта ZipArchive. Мы передали название архива (archive.zip) и константу ZIPARCHIVE::CREATE, которая сообщает, если архива не существует, то его надо создать.
3. С помощью метода addFile() добавляем в архив файлы. Сначала мы добавили файл "index.php", который находится в одной директории со скриптом. Далее мы добавили файл style.css, так же указав к нему правильный путь относительно скрипта.
4. А метод close() завершает работу с архивом. Всегда его выполняйте, чтобы освободить ресурсы компьютера, а также избежать самых различных проблем, связанных с работой этого скрипта и других скриптов, которым необходим доступ к этому архиву.
Извлекаем данные из zip-архива средствами PHP
Принцип извлечения чем-то похож на создание. Только вторая операция уже другая.
Алгоритм: открываем архив, извлекаем файлы, закрываем.
Рассмотирм пример:
Код PHP
<?php
$zip = new ZipArchive(); //Создаём объект для работы с ZIP-архивами
//Открываем архив archive.zip и делаем проверку успешности открытия
if ($zip->open("archive.zip") === true) {
$zip->extractTo("files/"); //Извлекаем файлы в указанную директорию
$zip->close(); //Завершаем работу с архивом
}
else echo "Архива не существует!"; //Выводим уведомление об ошибке
?>
Всё просто. Нужно указать только название файла (в нашем случае archive.zip) и куда извлечь файлы (в нашем случае в папку files, находящуюся в той же директории, что и php-файл).
Спасибо за внимание!