Zip класс 

    Zip класс CodeIgniter позволяет Вам создать 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');
    

    Справка класса 

    class CI_Zip 
    $compression_level = 2

    Уровень сжатия.

    Может варьироваться от 0 до 9, где 9 - самый высокий и 0 - без эффективного сжатия:

    $this->zip->compression_level = 0;
    
    add_data($filepath[, $data = NULL]) 
    Параметры:
    • $filepath (смешанный) – Путь файла или массив пар файл => данные
    • $data (массив) – Содержимое файла (игнорируется, если $filepath массив)
    Возвращаемый тип:

    смешанный

    Добавляет данные в zip архиве. Может работать как с одним файлом так и с несколькими файлами.

    При добавлении одного файла, первый параметр должен содержать имя файла, а второй должен содержать содержимое файла:

    $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);
    

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

    $name = 'personal/my_bio.txt';
    $data = 'I was born in an elevator...';
    
    $this->zip->add_data($name, $data);
    

    Пример выше разместит my_bio.txt файл в папке personal.

    add_dir($directory) 
    Параметры:
    • $directory (смешанный) – Строку с именем каталога или массив из нескольких каталогов
    Возвращаемый тип:

    пустота

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

    $this->zip->add_dir('myfolder'); // Создает каталог с названием "myfolder"
    
    read_file($path[, $archive_filepath = FALSE]) 
    Параметры:
    • $path (строка) – Путь к файлу
    • $archive_filepath (смешанный) – Новые имя/путь (строка) или (булево) стоит ли поддерживать оригинальный путь
    Возвращает:

    TRUE при успехе, FALSE при неудаче

    Возвращаемый тип:

    булево

    Позволяет сжимать файл, который уже существует где-то на сервере. Укажите путь к файлу и класс 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/ каталог.

    Вы также можете указать новое имя (содержащее путь) для добавлен файла на лету:

    $path = '/path/to/photo.jpg';
    $new_path = '/new/path/some_photo.jpg';
    
    $this->zip->read_file($path, $new_path);
    
    // Сохранить ZIP архив содержащий /new/path/some_photo.jpg
    $this->zip->download('my_archive.zip');
    
    read_dir($path[, $preserve_filepath = TRUE[, $root_path = NULL]]) 
    Параметры:
    • $path (строка) – Путь к каталогу
    • $preserve_filepath (булево) – Стоит ли поддерживать оригинальный путь
    • $root_path (строка) – Часть пути исключаемая из архива каталога
    Возвращает:

    TRUE при удаче, FALSE при неуспехе

    Возвращаемый тип:

    булево

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

    $path = '/path/to/your/directory/';
    
    $this->zip->read_dir($path);
    
    // Скачать файл на компьютер. Имя архива "my_backup.zip"
    $this->zip->download('my_backup.zip');
    

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

    $path = '/path/to/your/directory/';
    
    $this->zip->read_dir($path, FALSE);
    

    Это позволит создать в Zip директорию с именем “directory”, с вложенными каталогами указанного внутри, но не будет включать в себя /path/to/your часть пути.

    archive($filepath) 
    Параметры:
    • $filepath (строка) – Путь к Zip архиву
    Возвращает:

    TRUE при удаче, FALSE при неуспехе

    Возвращаемый тип:

    булево

    Пишет закодированный Zip файл в каталог на сервере. Предоставьте действительный путь содержащий в конце название файла. Убедитесь, что директория доступна для записи (обычно 755 - OK). Пример:

    $this->zip->archive('/path/to/folder/myarchive.zip'); // Создает файл с именем myarchive.zip
    
    download($filename = 'backup.zip') 
    Параметры:
    • $filename (строка) – Имя файла архива
    Возвращаемый тип:

    пустота

    Служит для загрузки Zip файла с вашего сервера. Вы должны передать имя zip файла для загрузки. Пример:

    $this->zip->download('latest_stuff.zip'); // File will be named "latest_stuff.zip"
    

    Примечание

    Не отображайте данные этого метода в контроллере, так как он посылает различные заголовки сервера, которые скачивают файл и файл обрабатывается как двоичный.

    get_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();
    
    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"); // Read the file's contents
    
    $this->zip->download('myphotos.zip');