Работа с архивами средствами PHP

Как архивировать в формате zip PHP написано в статье: http://blog.webmasterschool.ru/php/48/ На http://www.phpclasses.org можно скачать класс Create ZIP File, предназначенный для создания zip-файлов с иерархией папок. Пример использования: // Подключаем класс для работы с zip-архивами include_once(“createZip.inc.php”); $createZip = new createZip; // Добавляем директорию $createZip -> addDirectory(“dir/”); // Добавляем файл $fileContents = file_get_contents(“img.jpg”); $createZip -> addFile($fileContents, “dir/img.jpg”); // Создаем архив $fileName = “archive.zip”; $fd = fopen ($fileName, “wb”); $out = fwrite ($fd, $createZip -> getZippedfile()); fclose ($fd); // Отдаем архив браузеру $createZip -> forceDownload($fileName); @unlink($fileName); ?> Функция для извлечения файлов из архива: /** * Распаковывает zip-архив в указанный каталог. * $dir – полный путь к каталогу. * $file – полный путь к zip-архиву. * $log – флаг вывода диагностики. */ function unpackZip($dir, $file, $log=0) { if ($log) echo “Start unpack [$file] into [$dir] directory… “; if ($zip = zip_open($file)) { if ($zip) { // создать каталог, если он не существует if (! file_exists($dir)) mkdir($dir); while ($zip_entry = zip_read($zip)) { $name = zip_entry_name($zip_entry); if ($log) echo ” unpack : $name “; // последний символ имени $last = substr($name, strlen($name)-1); // если это каталог if ($last == “/” || $last == “\\”) { $subdir = $dir.”/”.$name; // создать каталог, если он не существует if (! file_exists($subdir)) mkdir ($subdir); } else { // распаковать файл if (zip_entry_open($zip, $zip_entry, “r”)) { $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)); $fp = fopen($dir.”/”.zip_entry_name($zip_entry), “w”); fwrite($fp, $buf); zip_entry_close($zip_entry); } else { return false; } } } zip_close($zip); } } else { return false; } return true; } ?> Разработка и создание сайтов, […]

Read more