CodeIgniter, руководство пользователя к версии 1.6.1


Класс Zip Encoding

Класс ZIP позволяет создавать zip архивы. Архивы могут быть скачены на компьютер или сохранены в директорию

Инициализация класса

Как и многие другие классы в CodeIgniter, класс Zip инициализируется в вашем контроллере с использованием функции $this->load->library:

$this->load->library('zip');

Однажды загруженный, объект ZIP будет доступен, с использованием: $this->zip

Пример

Этот пример показывает как сжать файл, сохранить его в папку на сервере и скачать его на компьютер.

$name = 'mydata1.txt';
$data = 'A Data String!';

$this->zip->add_data($name, $data);

// Запишет zip архив в папку на сервере. С именем"my_backup.zip"
$this->zip->archive('/path/to/directory/my_backup.zip');

// Загружает файл на компьютер. С именем "my_backup.zip"
$this->zip->download('my_backup.zip');

Функции класса ZIP

$this->zip->add_data()

Позволяет добавлять данные в Zip архив. Первый параметр должен содержать имя для файла, второй параметр данные с типом строка:

$name = 'my_bio.txt';
$data = 'Я был рожден в лифте...';

$this->zip->add_data($name, $data);

Можно многократно вызывать эту функцию, чтобы добавить несколько файлов в архив. Пример:

$name = 'mydata1.txt';
$data = 'A Data String!';
$this->zip->add_data($name, $data);

$name = 'mydata2.txt';
$data = 'Another Data String!';
$this->zip->add_data($name, $data);

Или можно передать список файлов и данных в массиве:

$data = array(
                'mydata1.txt' => 'A Data String!',
                'mydata2.txt' => 'Another Data String!'
            );

$this->zip->add_data($data);

$this->zip->download('my_backup.zip');

Если необходимо сжать данные и организовать их по папкам, включите путь в имя файла:

$name = 'personal/my_bio.txt';
$data = 'I was born in an elevator...';

$this->zip->add_data($name, $data);

В этом примере файл my_bio.txt будет расположен в папке с именем personal.

$this->zip->add_dir()

Позволяет добавлять директории. Обычно эта функция не используется, потому что возможно разместить данные по папкам используя функцию $this->zip->add_data(), но если нужно создать пустую папку можно использовать её. Пример:

$this->zip->add_dir('myfolder'); // Создаст папку с именем "myfolder"

$this->zip->read_file()

Позволяет сжать файл, который находится на сервере. Укажите путь к файлу и класс Zip прочитает его и добавит в архив:

$path = '/path/to/photo.jpg';

$this->zip->read_file($path);

// Загружает файл на компьютер. С именем "my_backup.zip"
$this->zip->download('my_backup.zip');

Если необходимо сохранить в Zip архиве структуру папок, укажите TRUE (булева) во втором параметре. Пример:

$path = '/path/to/photo.jpg';

$this->zip->read_file($path, TRUE);

// Загружает файл на компьютер. С именем "my_backup.zip"
$this->zip->download('my_backup.zip');

В этом примере файл photo.jpg будет расположен в папке: path/to/

$this->zip->read_dir()

Позволяет сжимать папки (и данные в них) которые расположены на сервере. Укажите путь к дериктории и класс ZIP рекурсивно прочитает и пересоздаст их как Zip архив. Все файлы и любые под-директории расположенные в пределах указанного пути будут закодированы(сжаты). Пример:

$path = '/path/to/your/directory/';

$this->zip->read_dir($path);

// Загружает файл на компьютер. С именем "my_backup.zip"
$this->zip->download('my_backup.zip');

$this->zip->archive()

Записывает Zip файл в директорию на сервере. Укажите правильный путь на сервере, заканчивающийся именем файла. У директории должны стоять права на запись(666 или 777 обычно). Пример:

$this->zip->archive('/path/to/folder/myarchive.zip'); // Creates a file named myarchive.zip

$this->zip->download()

Заставляет ZIP файл скачиваться с вашего сервера. В функцию необходимо передать имя zip файла.Пример:

$this->zip->download('latest_stuff.zip'); // Файл будет с именем "latest_stuff.zip"

Примечание: Не выводите никаких данных в контроллере в котором вызывается эта функция так как посылаются заголовки от сервера, которые заставляют скачиваться файл в двоичном формате.

$this->zip->get_zip()

Возвращает сжатые Zip данные. Обычно эта функция используется только если необходимо что-то сделать с данными. Пример:

$name = 'my_bio.txt';
$data = 'I was born in an elevator...';

$this->zip->add_data($name, $data);

$zip_file = $this->zip->get_zip();

$this->zip->clear_data()

Zip класс кеширует zip данные, чтобы не пришлось пересоздавать Zip архив каждый раз когда вы используете какую-либо функцию из перечисленных выше. Если необходимо создать несколько архивов с разными данными можно очистить кеш перед вызовом функции. Пример:

$name = 'my_bio.txt';
$data = 'I was born in an elevator...';

$this->zip->add_data($name, $data);
$zip_file = $this->zip->get_zip();

$this->zip->clear_data();

$name = 'photo.jpg';
$this->zip->read_file("/path/to/photo.jpg"); //Читает содержимое файла


$this->zip->download('myphotos.zip');