Spec-Zone.ru › CodeIgniter 3

Класс кодирования ZIP

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

  • Использование класса кодирования 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);

// Write the zip file to a folder on your server. Name it "my_backup.zip"
$this->zip->archive('/path/to/directory/my_backup.zip');

// Download the file to your desktop. Name it "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 — массив)
Тип возвращаемого значения:

void

Добавляет данные в архив 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 (смешанный тип) — Строка имени директории или массив нескольких директорий
Тип возвращаемого значения:

void

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

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

TRUE при успехе, FALSE при ошибке

Тип возвращаемого значения:

bool

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

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

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

// Download the file to your desktop. Name it "my_backup.zip"
$this->zip->download('my_backup.zip');

Если вы хотите, чтобы архив Zip сохранял структуру каталогов файла в нем, передайте TRUE (логическое значение) во второй параметр. Пример:

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

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

// Download the file to your desktop. Name it "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);

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

TRUE при успехе, FALSE при ошибке

Тип возвращаемого значения:

bool

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

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

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

// Download the file to your desktop. Name it "my_backup.zip"
$this->zip->download('my_backup.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 при ошибке

Тип возвращаемого значения:

bool

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

$this->zip->archive('/path/to/folder/myarchive.zip'); // Creates a file named myarchive.zip
download($filename = 'backup.zip')
Параметры:
  • $filename (строка) — Имя файла архива
Тип возвращаемого значения:

void

Заставляет файл 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()
Тип возвращаемого значения: void

Класс Zip кэширует ваши данные 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');

© 2014–2020 British Columbia Institute of Technology
Licensed under the MIT License.
https://codeigniter.com/userguide3/libraries/zip.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API