Создание ZIP-архива каталога на PHP

ZIP-архивирование на PHP довольно популярная тема. В данной статье покажу пример, как создается ZIP-архив каталога через PHP-скрипт.

Давайте я сразу приведу пример создания 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.

Author: master

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *