- Подробности
-
Категория: PHP. Файлы
Углубляться в алгоритмы архивирования и сжатия я не буду, просто скачайте готовый класс createZip. Первоначальный источник данного класса к сожалению не помню, так что если вдруг найдется — прошу сообщить.
Класс createZip обеспечивает полноценную работу с формированием нового ZIP архива, с возможностью его выдачи на лету или сохранения на диск. Покажу несколько простых приёмов.
Ну, во-первый нужно объявить объект данного класса:
$createZip = new createZip;
Добавим в корень архива текстовый файл:
$fileContents = "Hello world!";
$createZip->addFile($fileContents, "textfile.txt");
Создадим новую директорию:
$createZip->addDirectory("images/");
Ну а теперь допустим у нас есть картинка image.png в директории где выполняется данный скрипт. Загрузим эту картинку в директорию images нашего архива:
$fileContents = file_get_contents("image.png");
$createZip->addFile($fileContents, "images/image.png");
Сохраняем архив на диск и выдаём посетителю ссылку:
$filename = "archive.zip";
$fd = fopen($filename, "wb");
$out = fwrite($fd, $createZip->getZippedfile());
fclose($fd);
echo "Скачать архив: <a href="/$filename">$filename</a>";
Всё достаточно легко и просто. При желании, можно выдать архив на лету, после чего его сразу удалить. В классе для этого есть вспомогательная функция forceDownload.