Архивация файлов с помощью PHP не такой уж и хитрый процесс, нужно лишь знать что мы хотим и как это сделать [показать]
Что такое zip-архив
Zip — популярный формат сжатия данных и архивации файлов. Файл ZIP, чаще всего имеющий расширение .zip, хранит в сжатом или несжатом виде один или несколько файлов, которые можно из него извлечь путём распаковки с помощью специальной программы.
Этот формат был разработан Филом Кацем для использования в программе PKZIP. Впоследствии появилось множество других утилит, создающих файл в таком же формате. Подробней в Википедии
К делу
Иногда бывает просто необходимо хранить файлы в архивах. С одной стороны они меньше по объёму, с другой несколько файлов можно поместить в один. Возможно, если вам понадобится сделать это средствами PHP, моя заметка поможет вам в решении этой задачи.
И так речь пойдёт о Zip file creation class. Сам класс можно найти в phpMyAdmin, по крайней мере, я нашёл его именно там. Не вдаваясь в детали, рассмотрим основные функции класса:
addFile($data, $name, $time = 0)
Описание: добавление файла в архив.
Параметры:
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 функцией zipFile как файл filename.txt и получили архивированные данные функцией file(), которые сохранили как файл filename.zip. Вот и всё, удачи.
P.S.: если вы ищете архиватор WinZip, то его можно скачать здесь
P.P.S.: Если вы хотите сохранить файл с кириллическими именами, не забудьте сконвертировать их в досовскую кодировку cp866, к примеру так: $filename = iconv('windows-1251', 'cp866', $filename);
(за подсказку спасибо Александру)