Класс кодирования 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);
// 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