Elettracompany.com

Компьютерный справочник
15 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Php ziparchive установка

Класс ZipArchive

(PHP 5 >= 5.2.0, PHP 7, PECL zip >= 1.1.0)

Введение

Файловый архив, сжатый Zip.

Обзор классов

Свойства

Системный статус Zip-архива

Количество файлов в архиве

Имя файла в файловой системе

Комментарий к архиву

Содержание

  • ZipArchive::addEmptyDir — Добавляет новую директорию
  • ZipArchive::addFile — Добавляет в ZIP-архив файл по указанному пути
  • ZipArchive::addFromString — Добавляет файл в ZIP-архив, используя его содержимое
  • ZipArchive::addGlob — Add files from a directory by glob pattern
  • ZipArchive::addPattern — Add files from a directory by PCRE pattern
  • ZipArchive::close — Закрывает активный архив (открытый или вновь созданный)
  • ZipArchive::deleteIndex — Удаляет элемент в архиве, используя его индекс
  • ZipArchive::deleteName — Удаляет элемент в архиве, используя его имя
  • ZipArchive::extractTo — Извлекает содержимое архива
  • ZipArchive::getArchiveComment — Возвращает комментарий ZIP-архива
  • ZipArchive::getCommentIndex — Возвращает комментарий элемента, используя его индекс
  • ZipArchive::getCommentName — Возвращает комментарий элемента, используя его имя
  • ZipArchive::getExternalAttributesIndex — Retrieve the external attributes of an entry defined by its index
  • ZipArchive::getExternalAttributesName — Retrieve the external attributes of an entry defined by its name
  • ZipArchive::getFromIndex — Возвращает содержимое элемента по его индексу
  • ZipArchive::getFromName — Возвращает содержимое элемента по его имени
  • ZipArchive::getNameIndex — Возвращает имя элемента по его индексу
  • ZipArchive::getStatusString — Возвращают статус сообщения об ошибке, системный и/или zip-статус
  • ZipArchive::getStream — Получить дескриптор файла элемента, определенный по имени элемента (только для чтения)
  • ZipArchive::locateName — Возвращает индекс элемента в архиве
  • ZipArchive::open — Открывает ZIP-архив
  • ZipArchive::renameIndex — Переименовывает элемент по его индексу
  • ZipArchive::renameName — Переименовывает элемент по его имени
  • ZipArchive::setArchiveComment — Устанавливает комментарий к ZIP-архиву
  • ZipArchive::setCommentIndex — Устанавливает комментарий к элементу по его индексу
  • ZipArchive::setCommentName — Устанавливает комментарий к элементу, заданному по имени
  • ZipArchive::setCompressionIndex — Set the compression method of an entry defined by its index
  • ZipArchive::setCompressionName — Set the compression method of an entry defined by its name
  • ZipArchive::setExternalAttributesIndex — Set the external attributes of an entry defined by its index
  • ZipArchive::setExternalAttributesName — Set the external attributes of an entry defined by its name
  • ZipArchive::setPassword — Set the password for the active archive
  • ZipArchive::statIndex — Получение детальной информации о элементе по его индексу
  • ZipArchive::statName — Получение детальной информации о элементе по его имени
  • ZipArchive::unchangeAll — Отменяет все изменения, сделанные в архиве
  • ZipArchive::unchangeArchive — Возвращает все глобальные изменения, сделанные в архиве
  • ZipArchive::unchangeIndex — Отменяет все изменения у позиции с заданным индексом
  • ZipArchive::unchangeName — Отменяет все измения у позиции с заданным именем

Создание ZIP-архива на PHP

Вчера на форуме у меня спросили про создание ZIP-архивов на PHP. Я немного подумал и понял, что это тема будет интересна большому числу людей, ведь ZIP-архивирование на PHP весьма популярная тема. И в этой статье я покажу пример, как создаётся ZIP-архив через PHP-скрипт.

Давайте я сразу приведу пример создания ZIP-архива, а потом его тщательно прокомментирую:

open(«archive.zip», ZIPARCHIVE::CREATE); //Открываем (создаём) архив archive.zip
$zip->addFile(«index.php»); //Добавляем в архив файл index.php
$zip->addFile(«styles/style.css»); //Добавляем в архив файл styles/style.css
$zip->close(); //Завершаем работу с архивом
?>

В результате выполнения данного скрипта появится ZIP-архив, у которого в корне будет лежать файл index.php, а также будет создана директория styles, в которой будет находиться файл style.css. Я думаю, что это всё очевидно и логично. А теперь комментирую, что мы с Вами делали:

  • Создали объект ZipArchive с помощью конструктора.
  • Создали архив с помощью метода open() объекта ZipArchive. Мы передали название архива (archive.zip) и константу ZIPARCHIVE::CREATE, которая сообщает, если архива не существует, то его надо создать.
  • Метод addFile() добавляет в архив файлы. Сначала мы добавили файл «index.php«, который находится в одной директории со скриптом. Далее мы добавили файл style.css, так же указав к нему правильный путь относительно скрипта.
  • Метод close() завершает работу с архивом. Всегда его выполняйте, чтобы освободить ресурсы компьютера, а также избежать самых различных проблем, связанных с работой этого скрипта и других скриптов, которым необходим доступ к этому архиву.

Вот таким простым способом Вы можете создавать в автоматическом режиме ZIP-архивы с помощью PHP. В следующей статье мы с Вами разберём, как извлекать ZIP-архив через PHP.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Читать еще:  Задание функции в matlab

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

Она выглядит вот так:

  • BB-код ссылки для форумов (например, можете поставить её в подписи):
  • Комментарии ( 21 ):

    Напишите статью о том, как создать дерево файлов в каталоге и в подкаталогах.

    Не очень понятно, что означает «как создать дерево файлов»? Это просто вывести на страницу список всех каталогов, подкаталогов, файлов, файлов внутри подкаталогов и так далее. Вы это хотите?

    Да, конечно так. Я пытался так сделать, но у меня работало с ошибками.

    Хорошо, напишу в пятницу такую статью.

    Это будет интересно. Спасибо.

    А как в архив добавить папку с под папками и файлами чтоб не добавлять все файлы в ручную?

    Так просто нельзя. Всё равно придется создавать создавать каждую папку как пустую и в неё уже добавлять файлы.

    Михаил, а почему при создании объекта на строку с объектом $zip = new ZipArchive(); выдаёт ошибку («Fatal error: Class ‘ZipArchive’ not found in X:homeoop.localwwwzip.php on line 16») файл zip.php у меня является классом

    Нет расширения этого php_zip.dll

    Это получается что вообще нельзя создавать архивы? Это ведь Денвер

    Установите дополнительные модули, их можно скачать на официальном сайте.

    Дали бы сразу и ссылку в этой статье на расширение.

    Работа с ZIP архивами в PHP

    Расширение архива Zip в PHP используется для работы с Zip архивами и файлами, которые в них содержатся. Для использования этого расширения в PHP 5 необходимо активировать php_zip.dll внутри файла php.ini. В этой статье вы узнаете о том, как работать с файлами Zip архивов в PHP, используя ряд PHP демо-приложений. Вы научитесь: создавать Zip архивы;

    • создавать Zip архивы;
    • добавлять файлы и папки в архив из строки и данной дорожки;
    • удалять и переименовывать файлы, используя их индексы и имена;
    • составлять список характеристик объектов ZipArchive (количество файлов, имя файла, комментарии, statusSys и т. д.).

    Создание Zip архивов в PHP и добавление файлов

    Для создания Zip архива в PHP можно использовать предопределенную константу ZIPARCHIVE::CREATE; архив будет создан, если он еще не существует. (Для добавления файлов внутрь архива можно использовать вышеописанные методы addFile и addFromString.) Первое демо-приложение (add_file_from_string.php) создает (если таковой еще не существует) или открывает Zip архив archive1.zip, а после добавляет в него файл, используя метод addFromString():

    bool ZipArchive::addFromString ( string $localname , string $contents ): Добавить файл в Zip-архив, используя его содержание.

    Здесь код для add_file_from_string.php:

    С результаты выполнения add_file_from_string.php вы также можете ознакомиться на Рисунке 1.

    Файловый текст test1.txt был успешно добавлен в archive1.zip

    Рис.1 The archive1.zip

    Второе демо-приложение (add_file_directory.php) также использует архив archive1.zip для печати всех характеристик объекта ZipArchive (статус, statusSys, numFiles, название файла, комментарии или специальные параметры, в нашем случае архивный комментарий и количество файлов), чтобы добавить пустой каталог под названием Subdirectory1. Это приложение также использует архив archive1.zip для добавления нового файла, используя метод addFile. Ниже содержатся прототипы методов addFile() и addEmptyDir():

    bool ZipArchive::addFile ( string $filename [, string $localname ] ) : добавляет файл в Zip-архив с даного пути bool ZipArchive::addEmptyDir ( string $dirname ) : добавляет пустую папку в архив.

    Здесь код для add_file_directory.php:

    С результатом листинга add_file_directory.php вы также можете ознакомиться на Рисунке 2:

    ZipArchive Object ( [status] => 0 [statusSys] => 0 [numFiles] => 2 [filename] => D:Apache GroupApache2htdocsphpZIParchive1.zip [comment] => PHP ZIP ARCHIVE ) Создан новый каталог Комментарий: PHP ZIP ARCHIVE № файла:4

    Рисунок 2. Характеристики объекта archive2.zip

    Следующее демо-приложение служит для создания Zip архива archive2.zip, который включает два файла: test3.txt и test4.txt. (Информацию о том, как пользоваться этим приложением, вы сможете найти ниже.) Код для archive2.php:

    Результат archive2.php. Вы также можете ознакомиться с результатами на Рисунке 3: Файловый текст test3.txt успешно добавлен в archive2.zip при использовании метода addFile Файловый текст test4.txt успешно добавлен в archive2.zip при использовании метода addFromString method.

    Читать еще:  Array reverse php

    Рисунок 3. Содержание archive2.zip

    Извлечение Zip архива в PHP

    Демо-приложение этой части (extract_archives.php) показывает, как извлекать содержимое архива в специальную папку, используя метод extractTo():bool ZipArchive::extractTo ( string $destination [, mixed $entries ] ) : извлечь содержимое архива.

    Архивы archive1.zip и archive2.zip будут извлечены в папку archive, как показано на Рисунке 4. Код для extract_archives.php:

    Результат extract_archives.php: archive1.zip и archive2.zip были извлечены в папку archive!

    Рисунок 4. Содержимое папки archive после извлечения archive1 и archive2

    Следующее демо-приложение (extract_to_specified_folder.php) извлекает содержимое Zip архива в специальную папку, используя вышеописанный метод extractTo(). Код для extract_to_specified_folder.php:

    Результат extract_to_specified_folder.php. Вы также можете ознакомиться с результатами на Рисунке 5: Архив извлечен в папку ZIP_extract!

    Рисунок 5. Папка ZIP_extract с файлами archive1

    С результатами листинга filelist.php вы также можете ознакомиться с на Рисунке 6: Файлы test3.txt и test4.txt из архива archive2.zip успешно извлечены в указанный каталог ZIP_TEST!

    Рисунок 6.Выбранные файлы, извлеченные из archive2 в назначеный каталог ZIP_TEST

    Получение характеристик объекта на основе его индекса

    Для получения характеристик отдельного файла можно использовать метод statIndex:

    mixed ZipArchive::statIndex ( int $index [, int $flags ] ).

    Следующее демо-приложение (statIndex.php) итерирует список файлов в archive2.zip и печатает характеристики для каждого из объектов. Код для statIndex.php:

    Результат листинга 5.php:

    Следующее демо-приложение (locate.php) также позволяет получать характеристики файла, при условии что archive1.zip содержит этот файл. Метод locateName возвращает индекс файла в архиве и использует предопределенную константу ZIPARCHIVE::FL_NODIR, которая игнорирует компонент каталог. Прототип константы ZIPARCHIVE::FL_NODIR :

    mixed ZipArchive::locateName ( string $name [, int $flags ] )

    Код для locate.php:

    Результат листинга locate.php:

    Array ( [name] => test2.txt [index] => 2 [crc] => -513033757 [size] => 50 [mtime] => 1269715222 [comp_size] => 49 [comp_method] => 8 )

    Удаление и переименование Zip архивов в PHP

    Для удаления или переименования Zip архивов в PHP можно использовать имя или индекс. Методы, которыми можно воспользоваться для этой цели, включают:

    bool ZipArchive::deleteIndex ( int $index ) – Удаляет объект в архиве, используя индекс; bool ZipArchive::deleteName ( string $name ) – Удаляет объект в архиве, используя имя; bool ZipArchive::renameIndex ( int $index , string $newname ) – Переименует объект на основе индекса; bool ZipArchive::renameName ( string $name , string $newname ) – Переименует объект на основе имени.

    Следующее демо-приложение (rename.php) использует все вышеперечисленные методы для переименования файла с «index=3», как «renameByIndex.txt», и «test4.txt», как «renameByName.txt». Код для rename.php:

    Результаты листинга rename.php. Вы также можете ознакомиться с результатами на Рисунке 7 и Рисунке 8: Файлы успешно переименованы в архиве archive2.zip!

    Рисунок 7. Исходное содержимое archive2.zip

    Рисунок 8. Содержание архива archive2.zip после того, как файлы были переименованы

    Следующее приложение (delete.php) удаляет из archive2.zip файл с «index=1» и текстовый файл renameByIndex.txt, используя методы deleteIndex() и deleteName(). Код для delete.php:

    В связи с тем, что архив содержал всего два файла и оба были удалены, archive2.zip был также удален. Следующее приложение (add_text_files.php) итерирует архивные файлы и добавляет все файлы .txt из настоящего каталога в text_archive.zip. Код для add_text_files.php:

    Результаты листинга add_text_files.php: text_archive.zip успешно создан!

    Рисунок 9. Группировка всех текстовых файлов из текущего каталога в новый архив text_archive.zip

    Заключение

    Как вы, наверное, заметили, изучая приложения, представленные в статье, работать с расширением архива Zip в PHP довольно просто и даже забавно. Все, что от вас требуется, это умение обращаться с методами расширения. В этом случае вы с успехом сможете осуществлять различные операции с Zip архивами.

    Php ziparchive установка

    Здесь могла бы быть ваша реклама

    Покинул форум
    Сообщений всего: 4574
    Дата рег-ции: Июль 2006
    Откуда: Israel

    Секрет
    Теперь, когда вы уже наверняка второпях отправили свой запрос,
    я расскажу вам простой секрет, который сэкономит вам уйму ожиданий,
    даже если первый ответ по теме последуем сразу же.

    Само собой я знаю что ответят мне тут же, и если я посмотрю
    на сообщения на форуме, то пойму что в общем то я и не ошибаюсь.
    Но еще я точно замечу, что очень мало тем, в которых всего два ответа :
    вопрос автора и еще два сообщение вида Ответ + Спасибо

    После этого приходится начинать уточнять этим неграмотным что мне надо.
    Они что, сами читать не умеют? А уточнять приходится.
    И иногда пока они переварят то что я им скажу проходит и не одна ночь..

    Читать еще:  Php path separator

    Уверен что если бы я им сказал что у меня есть
    фиолетовый квадрат, и нужно превратить его в синий треугольник
    и я пытался взять кисточку, макнуть в банку и поводить ей по квадрату
    но почему то кисточка не принимала цвет краски в банке,
    то на мой вопрос — где взять правильные банки мне бы ответили гораздо быстрее
    предложив её открыть, а не тратить еще стольник на жестянку.

    Поэтому с тех пор я строю свои вопросы по проверенной давным давно схеме:
    Что есть
    Что нужно получить
    Как я пытался
    Почему или что у меня не получилось.

    На последок как оно происходит на форумах

    Новичок: Подскажите пожалуста самый крепкий сорт дерева! Весь инет перерыл, поиском пользовался!
    Старожил: Объясни, зачем тебе понадобилось дерево? Сейчас оно в строительстве практически не используется.
    Новичок: Я небоскрёб собираюсь строить. Хочу узнать, из какого дерева делать перекрытия между этажами!
    Старожил: Какое дерево? Ты вообще соображаешь, что говоришь?
    Новичок: Чем мне нравиться этот форум — из двух ответов ниодного конкретного. Одни вопросы неподелу!
    Старожил: Не нравится — тебя здесь никто не держит. Но если ты не соображаешь, что из дерева небоскрёбы не строят, то лучше бы тебе сначала школу закончить.
    Новичок: Не знаите — лучше молчите! У меня дедушка в деревянном доме живёт! У НЕГО НИЧЕГО НЕ ЛОМАЕТСЯ.
    Но у него дом из сосны, а я понимаю, что для небоскрёба нужно дерево прочнее! Поэтому и спрашиваю. А от вас нормального ответа недождёшся.
    Прохожий: Самое крепкое дерево — дуб. Вот тебе технология вымачивания дуба в солёной воде, она придаёт дубу особую прочность:
    Новичок: Спасибо, братан! То что нужно.

    Отредактировано модератором: Uchkuma, 26 Апреля, 2011 — 10:21:12

    Архивировать и разархивировать файлы через PHP

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

    Итак, чтобы работать с архивами в php нужно использовать класс ZipArchive . Он позволяет не только архивировать папки, но и разархивировать их в указанную вами директорию. При работе с ним стоит помнить про кириллические названия — они не поддерживаются. Поэтому название архива, файлов и папок должны быть латиницей, без пробелов.

    Создадим архив из файлов. Для этого используем следующий код:

    open(«archive.zip», ZIPARCHIVE::CREATE); //Открываем или создаем архив, если его не существует
    $zip->addFile(«in.php»); //Добавляем в архив файл in.php
    $zip->addFile(«styles/style.css»); //Создаем папку styles и добавляем файл style.css
    $zip->close(); //Завершаем работу с архивом
    ?>

    По комментариям к примеру, думаю, ясно как архивировать файлы. После работы скрипта создастся archive.zip, в котором будет файл in.php и папка styles, содержащая файл style.css.

    Теперь разархивируем файлы с произвольного архива. Для этого используем код:

    open(‘archive.zip’) === TRUE) <
    $zip -> extractTo(‘filess’); //Извлекаем файлы из архива в папку filess. Если паки не существует — создаст ее.
    $zip -> close(); >
    else echo ‘Ошибка при обращении к архиву’;
    ?>

    Данные два примера — это основы работы с классом ZipArchive(). Рассмотрим другие функции и возможности:

    $zip->addGlob(‘*.‘, GLOB_BRACE); //Добавляем в архив файлы с определенным расширением
    $zip->addFromString(‘test.txt’, ‘строка-содержимое файла’); — может создать файл сразу с содержимым.
    $zip->deleteName(‘in.php’); $zip->deleteName(‘testDir/’); //Удаляет файл или директорию из архива
    $zip->renameName(‘currentname.txt’,’newname.txt’); //Переименовывает элемент по его имени
    $zip->setArchiveComment(‘Комментарий’); //Устанавливает комментарий к ZIP-архиву

    $zip->open(«archive.zip», ZIPARCHIVE::CREATE); //Создаем архив archive.zip
    $zip->open(«files/archive.zip», ZIPARCHIVE::CREATE); //Создаем архив archive.zip в папке files
    $zip->addFile(путь исходного файла, имя под которым файл будет добавлен в архив);
    $zip->addFile(files/archive.zip, 12.zip); // обычный пример
    $zip->addFile(files/archive.zip, img/12.zip); //сохранили файл из files в img
    $zip->addFile(files/archive.zip); // возьмет из files/archive.zip и сохранит в архив с папкой files

    Если у вас не работают функции архивации, то либо вы допустили ошибку, либо в хостинге нет поддержки zip архивов. Проверить это можно используя phpinfo(); — если при выводе информации вы найдете категорию zlib, значит функция создания архивов у вас есть.

    0 0 голоса
    Рейтинг статьи
    Ссылка на основную публикацию
    ВсеИнструменты 220 Вольт