Давайте я сразу приведу пример создания ZIP-архива, а затем его тщательно прокомментирую:
$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-архиве будут загружены в указанную директорию.
Источник: profiphp.ru/useful/creating_zip_archive_folder_php.html
If you found an error, highlight it and press Shift + Enter or click here to inform us.