субота, 14 лютого 2009 р.

Работа с архивами средствами 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;
}
?>

Немає коментарів:

Мені соромно за українські ЗМІ. Але ще не пізно згадати, для чого існує журналістика

Мені соромно за українські ЗМІ, які на 12 році війни часто мовчать про українське, але легко знаходять місце для того, що оплачено. Поки вор...