Архивировать и разархивировать файлы через PHP

Архивировать и разархивировать файлы через PHP

4324234

При создании разных программ через php вам может пригодиться метод создания архивов на сервере, в которые можно поместить не только файлы, но и целые папки. Большим преимуществом php является присутствие встроенного функционала для работы с zip архивами.

Итак, чтобы работать с архивами в php нужно использовать класс ZipArchive. Он позволяет не только архивировать папки, но и разархивировать их в указанную вами директорию. При работе с ним стоит помнить про кириллические названия - они не поддерживаются. Поэтому название архива, файлов и папок должны быть латиницей, без пробелов.

Создадим архив из файлов. Для этого используем следующий код:

<?php
//Заархивируем файлы
$zip = new ZipArchive(); //Создаём объект для работы с ZIP-архивами
$zip->open("archive.zip", ZIPARCHIVE::CREATE); //Открываем или создаем архив, если его не существует
$zip->addFile("in.php"); //Добавляем в архив файл in.php
$zip->addFile("styles/style.css"); //Создаем папку styles и добавляем файл style.css
$zip->close(); //Завершаем работу с архивом
?>

По комментариям к примеру, думаю, ясно как архивировать файлы. После работы скрипта создастся archive.zip, в котором будет файл in.php и папка styles, содержащая файл style.css.

Теперь разархивируем файлы с произвольного архива. Для этого используем код:

<?php
//Разархивируем файлы архива
$zip = new ZipArchive;
if ($zip -> open('archive.zip') === TRUE) {
$zip -> extractTo('filess'); //Извлекаем файлы из архива в папку filess. Если паки не существует - создаст ее.
$zip -> close(); }
else echo 'Ошибка при обращении к архиву';
?>

Данные два примера - это основы работы с классом ZipArchive(). Рассмотрим другие функции и возможности:

$zip->addGlob('*.{jpg,txt}', GLOB_BRACE); //Добавляем в архив файлы с определенным расширением
$zip->addFromString('test.txt', 'строка-содержимое файла'); - может создать файл сразу с содержимым.
$zip->deleteName('in.php'); $zip->deleteName('testDir/'); //Удаляет файл или директорию из архива
$zip->renameName('currentname.txt','newname.txt'); //Переименовывает элемент по его имени
$zip->setArchiveComment('Комментарий'); //Устанавливает комментарий к ZIP-архиву

$zip->open("archive.zip", ZIPARCHIVE::CREATE); //Создаем архив archive.zip
$zip->open("files/archive.zip", ZIPARCHIVE::CREATE); //Создаем архив archive.zip в папке files
$zip->addFile(путь исходного файла, имя под которым файл будет добавлен в архив);
$zip->addFile(files/archive.zip, 12.zip); // обычный пример
$zip->addFile(files/archive.zip, img/12.zip); //сохранили файл из files в img
$zip->addFile(files/archive.zip); // возьмет из files/archive.zip и сохранит в архив с папкой files

Если у вас не работают функции архивации, то либо вы допустили ошибку, либо в хостинге нет поддержки zip архивов. Проверить это можно используя phpinfo(); - если при выводе информации вы найдете категорию zlib, значит функция создания архивов у вас есть.

 

 

| | Архивировать и разархивировать файлы через PHP | При создании разных программ через php вам может пригодиться метод создания архивов на сервере, в которые можно поместить не только файлы, но и целые | http://blogprogram.ru/wp-content/uploads/2016/09/4324234-131x131.jpg