Архивация файлов в формате ZIP

На одном месте ничего долго не стоит и такой язык программирования как PHP активно развивается. Если у Вас возникла необходимость работы с ZIP архивами файлов, то Вы можете использовать класс ZipArchive. Конечно же, старые и проверенные временем решения всё равно не утратили свою привлекательность.
Но начнём по порядку. В начале, давайте попытаемся дать ответ на вопрос: «Что же это такое — zip-архив?»
Zip — наверно самый популярный формат сжатия данных, применяемый для архивации файлов. Файл ZIP, с расширением .zip, осуществляет хранение в сжатом или несжатом виде один или сразу несколько файлов, которые когда необходимо, можно из него извлечь при распаковке с помощью специальной программы.
Разработал этот формат Фил Кац, собираясь использовать в программе PKZIP. Затем появилось множество других утилит, которые создают файл в таком же формате. Если вас серьёзно заинтересовал этот вопрос, то советую ознакомиться с соответствующими статьями в Википедии.

А теперь перейдём от слов к делу. Иногда возникает необходимость хранения файлов в архиве. Потому как они, во-первых, становятся меньше по объёму, во-вторых, есть возможность несколько файлов поместить в один. Естественно, что для архивации файлов можно использовать специальные программы, например 7-zip или WinZip, но при некоторых случаях имеет место смысл автоматизировать этот процесс. В данной заметке речь пойдёт о такой вещи, как Zip file creation class – класс, который был найден мною в сборке phpMyAdmin.
Не углубляясь в подробности, рассмотрим его основные функции:


addFile($data, $name, $time=0)

Описание: добавление файла в файловый архив.
Параметры функции:
* $data – содержание файла
* $name – имя файла в архиве, которое может содержать путь
* $time – временная метка (timestamp), по умолчание текущая (является необязательным параметром)
Описание: архивирует и возвращает архив с данными в виде строки.

file()

Для того чтобы работа с классом была наглядной, приведу небольшой пример:


<?php
include zip.lib.php
$data = "текст файла";
$name = "filename.txt";
$zipfile = new zipfile();
$zipfile->addFile($data, $name);
$zipdata = $zipfile->file();
$fp = fopen ("filename.zip", "w+");
fwrite($fp, $zipdata);
fclose($fp);
?>

Как видно, здесь мы создали объект $zipfile, провели архивацию данных $data функцией addFile как файл filename.txt и в итоге получили архивированные данные функцией file(), которые сохранили как файл под названием filename.zip.

На всякий случай, если вы захотите сохранять файлы с именами, которые содержат кириллицу, то не забывайте сконвертировать их в ДОСовскую кодировку cp866:


$filename = iconv('windows-1251', 'cp866', $filename);

[author_infos]

kurilka

Несколько слов об авторе kurilka

Каждому любознательному человеку нужно посетить данный сайт. Здесь вы можете найти разнообразные заметки на любую тему. На этом сайте вы найдете заметки на тему от денег и юмора до уже серьезных вещей таких как софт и железо.
http://kurilka.co.ua

Пока молчат

Leave A Reply

You must be logged in to post a comment.