$zip = new ZipArchive(); // Створюємо об'єкт для роботи із ZIP-архівами
$zip->open('archive.zip', ZIPARCHIVE::CREATE); // Відкриваємо (створюємо) архів archive.zip
$zip->addFile('index.php'); // Додаємо до архіву файл index.php
$zip->close(); // Завершуємо роботу з архівомВ результаті виконання цього скрипта з'явиться ZIP-архів, у корені якого буде міститися файл 'index.php'. Я думаю, що це все очевидно та логічно. А тепер коментую, що ми з Вами робили:
1. Створили об'єкт ZipArchive за допомогою конструктора.
2. Створили архів за допомогою методу Open об'єкту ZipArchive. Ми передали назву архіву archive.zip та константу ZIPARCHIVE::CREATE, яка повідомляє, якщо архів не існує, то його треба створити.
3. Метод AddFile додає до архіву файл 'index.php', який знаходиться в одній директорії зі скриптом.
4. Метод Close завершує роботу з архівом. Завжди виконуйте його, щоб звільнити ресурси комп'ютера, а також уникнути проблем, пов'язаних із роботою цього скрипту та інших скриптів, яким необхідний доступ до цього архіву.
Ось таким простим способом можна створювати в автоматичному режимі ZIP-архіви за допомогою PHP.
Якщо ви хочете завантажити весь вміст каталогу, вам необхідно створити архів файлів із збереженням структури, а потім завантажити його з сервера. Ось код:
$zip = new ZipArchive();
$zip->open('archive.zip', ZIPARCHIVE::CREATE);
function addFile($path) {
global $zip;
if ($content_cat = glob($path.'/*')) {
foreach ($content_cat as $object) {
if (is_dir($object)) {
@chmod($object, 0755);
addFile($object);
} else {
@chmod($object, 0644);
$zip->addFile($object);
}
}
}
}
addFile($_SERVER['DOCUMENT_ROOT']);
$zip->close();Також необхідно написати про розархівування ZIP-архів через PHP.Порядок створення архіву був простим: відкрити, додати файли до архіву, закрити. Для отримання ZIP-архіву порядок дуже схожий: відкрити, витягнути, закрити. Фактично, змінюється лише центральна частина. Давайте розберемо простий приклад:
$zip = new ZipArchive();
if ($zip->open('archive.zip') === true ) {
$zip->extractTo($_SERVER['DOCUMENT_ROOT']);
$zip->close();
} else {
echo "Архів не існує!";
}Таким чином, всі файли та папки, які знаходяться в ZIP-архіві, будуть завантажені в зазначену директорію.