аватар Автор: Сергей Касаткин | 22 ноября 2013 14:48

Статьи / PHP /

Как создать или извлечь данные из ZIP-архива через PHP?

Создаём 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() добавляем в архив файлы. Сначала мы добавили файл &quot;index.php&quot;, который находится в одной директории со скриптом. Далее мы добавили файл 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-файл).

Спасибо за внимание!
 



Похожие статьи


Комментарии к статье (vk.com)