Образовательный проект «SnakeProject» Михаила Козлова

Навигация

⇒ WEB Разработка ⇐

CISCO

Voice(Asterisk\Cisco)

Microsoft

Powershell

Python

SQL\T-SQL

FreeBSD and Nix

Общая

ORACLE SQL \ JAVA

Мото

Стрельба, пневматика, оружие

Саморазвитие и психология


Codeigniter: zip encoding


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

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

Загруженный класс библиотеки Zip доступен для использования как $this->zip

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

$name = 'mydata1.txt';
$data = 'Строка с данными!';

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

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

$name = 'my_bio.txt';
$data = 'Я родился в лифте...';

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

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

$name = 'mydata1.txt';
$data = 'Строка с данными!';
$this->zip->add_data($name, $data);

$name = 'mydata2.txt';
$data = 'Другая строка с данными!';
$this->zip->add_data($name, $data);

Или вы можете передать множество файлов, используя массив:

$data = array(
'mydata1.txt' => 'Строка с данными!',
'mydata2.txt' => 'Другая строка с данными!'
);

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

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

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

$name = 'personal/my_bio.txt';
$data = 'Я родился в лифте...';

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

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

Создаст ZIP с директорией "directory" внутри, и все ее поддиректории будут корректно сохранены внутри, но не будет включен путь /path/to/your.

$this->zip->archive()
Записывает файл с архивом zip в директорию на вашем сервере. Передайте правильный серверный путь, заканчивающийся именем. Убедитесь, что директория является записываемой. Пример:

$this->zip->archive('/path/to/folder/myarchive.zip'); // Создаст файл 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 = 'Я родился в лифте...';

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

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

$this->zip->clear_data()
Класс zip кеширует ваши данные, поэтому следует перекомпилировать их перед каждым новым использованием функции. Если, к примеру, вы создаете несколько архивов, каждый с разными данными, вы должны очистить кеш между вызовами. Пример:

$name = 'my_bio.txt';
$data = 'Я родился в лифте...';

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

Пример:

Имеется папка uploads в которой имеется фотка youfon.jpg

Вид zip.php - 3 формочки:

<html>
<head>
<title></title>
</head>

<body>
  
<form method="post" action="<?=base_url();?>index.php/blog/archive" align="center">
<textarea name="text" rows="10" cols="30"></textarea><br />
<input type="submit" name="archive" value="archive" />
</form>


<form method="post" action="<?=base_url();?>index.php/blog/readf" align="center">
<input type="submit" name="readf" value="readf" />
</form>

 
<form method="post" action="<?=base_url();?>index.php/blog/readd" align="center">
<input type="submit" name="readd" value="readd" />
</form>

</body>
</html>

И сам контроллер blog.php:

<?php
class Blog extends CI_Controller {
     
    function index()
    {
        $this->load->view('zip');
    }
    
    //Архивируем введенный текст и скачиваем
    function archive()
    {
        $this->load->library('zip');
        
        $file = 'file.txt';
        $text = $this->input->post('text');
        
        $this->zip->add_data($file, $text);

        $this->zip->archive('./uploads/zip.zip');
        $this->zip->download('zip.zip'); 
    }
    
    //Качаем 1 заархивированный файл
    function readf()
    {
        $this->load->library('zip');
        
        $path = 'Z:\home\site\www\uploads\youfon.jpg';

        $this->zip->read_file($path);
        $this->zip->download('zip.zip'); 
    }
    
    //Качаем заархивированную директорию
    function readd()
    {
        $this->load->library('zip');
        $path = './uploads/';

        $this->zip->read_dir($path, TRUE);
        $this->zip->download('zip.zip'); 
    }
    
    
}    

И вызовем http://site/index.php/blog/


Комментарии пользователей

Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!

Контакты Группа ВК Сборник материалов по Cisco, Asterisk, Windows Server, Python и Django, SQL и T-SQL, FreeBSD и LinuxКод обмена баннерами Видео к IT статьям на YoutubeВидео на другие темы Смотреть
Мои друзья: Советы, помощь, инструменты для сис.админа, статическая и динамическая маршрутизация, FreeBSD

© Snakeproject.ru создан в 2013 году.
При копировании материала с сайта - оставьте ссылку.

Рейтинг@Mail.ru
Рейтинг@Mail.ru Яндекс.Метрика





Поддержать автора и проект