php скрипт для архивирования
Создание 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. Я думаю, что это всё очевидно и логично. А теперь комментирую, что мы с Вами делали:
Вот таким простым способом Вы можете создавать в автоматическом режиме ZIP-архивы с помощью PHP. В следующей статье мы с Вами разберём, как извлекать ZIP-архив через PHP.
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
Комментарии ( 21 ):
Напишите статью о том, как создать дерево файлов в каталоге и в подкаталогах.
Не очень понятно, что означает «как создать дерево файлов»? Это просто вывести на страницу список всех каталогов, подкаталогов, файлов, файлов внутри подкаталогов и так далее. Вы это хотите?
Да, конечно так. Я пытался так сделать, но у меня работало с ошибками.
Хорошо, напишу в пятницу такую статью.
Это будет интересно. Спасибо.
А как в архив добавить папку с под папками и файлами чтоб не добавлять все файлы в ручную?
Так просто нельзя. Всё равно придется создавать создавать каждую папку как пустую и в неё уже добавлять файлы.
Нет расширения этого php_zip.dll
Это получается что вообще нельзя создавать архивы? Это ведь Денвер
Установите дополнительные модули, их можно скачать на официальном сайте.
Дали бы сразу и ссылку в этой статье на расширение.
Как заархивировать целую папку с помощью PHP
Я нашел несколько способов, как сделать ZIP для определенного файла, но как насчет определенной папки?
Внутри папки My Folder находятся файлы. После архивации папки My Folder я также хочу удалить все содержимое папки, кроме important.txt.
Мне нужна ваша помощь. Спасибо.
Ответ 1
Архивация целой папки:
// Получаем реальный путь к нашей папке
// Инициализация объекта архива
$zip = new ZipArchive();
$zip->open(‘file.zip’, ZipArchive::CREATE | ZipArchive::OVERWRITE);
// Создание рекурсивного итератора каталогов
$files = new RecursiveIteratorIterator(
// Пропустите каталоги (они будут добавлены автоматически)
// Получение реального и относительного пути для текущего файла
$relativePath = substr($filePath, strlen($rootPath) + 1);
// Добавить текущий файл в архив
// Zip-архив будет создан только после закрытия объекта
Архивация папки + удаление всех файлов, кроме «important.txt»:
// Инициализация объекта архива
$zip = new ZipArchive();
$zip->open(‘file.zip’, ZipArchive::CREATE | ZipArchive::OVERWRITE);
// Инициализация пустого «списка удаления»
// Создание рекурсивного итератора каталогов
$files = new RecursiveIteratorIterator(
// Пропустите каталоги (они будут добавлены автоматически)
// Получение реального и относительного пути для текущего файла
$relativePath = substr($filePath, strlen($rootPath) + 1);
// Добавить текущий файл в архив
// Добавить текущий файл в «список удаления»
// удалить его позже, потому что ZipArchive создает архив только после вызова функции close, и ZipArchive блокирует файлы до создания архива
// Zip-архив будет создан только после закрытия объекта
// Удалить все файлы из «списка удаления»
Ответ 2
В классе ZipArchive есть полезный недокументированный метод: addGlob();
$zipArchive = new ZipArchive();
die(«Ошибка при создании архива\n»);
echo «Ошибка при записи файлов в zip\n»;
Ответ 3
$zip = new ZipArchive;
Однако это не будет рекурсивно архивироваться.
Ответ 4
Я попробовал использовать приведенный ниже код, и он работает. Код не требует пояснений.
class FlxZipArchive extends ZipArchive <
$dir = opendir ($location);
while ($file = readdir($dir)) <
$za = new FlxZipArchive;
echo ‘Не удалось создать zip архив!’;
Ответ 5
Это функция, которая архивирует всю папку и ее содержимое в zip-файл, и вы можете использовать ее просто, например, так :
И непосредственно реализация:
// сжать все файлы в исходном каталоге в каталог назначения
$zip = new ZipArchive();
Php скрипт для архивирования
В этом разделе помещены уроки по PHP скриптам, которые Вы сможете использовать на своих ресурсах.
Фильтрация данных с помощью zend-filter
Когда речь идёт о безопасности веб-сайта, то фраза «фильтруйте всё, экранируйте всё» всегда будет актуальна. Сегодня поговорим о фильтрации данных.
Контекстное экранирование с помощью zend-escaper
Обеспечение безопасности веб-сайта — это не только защита от SQL инъекций, но и протекция от межсайтового скриптинга (XSS), межсайтовой подделки запросов (CSRF) и от других видов атак. В частности, вам нужно очень осторожно подходить к формированию HTML, CSS и JavaScript кода.
Подключение Zend модулей к Expressive
Expressive 2 поддерживает возможность подключения других ZF компонент по специальной схеме. Не всем нравится данное решение. В этой статье мы расскажем как улучшили процесс подключение нескольких модулей.
Совет: отправка информации в Google Analytics через API
Предположим, что вам необходимо отправить какую-то информацию в Google Analytics из серверного скрипта. Как это сделать. Ответ в этой заметке.
Подборка PHP песочниц
Подборка из нескольких видов PHP песочниц. На некоторых вы в режиме online сможете потестить свой код, но есть так же решения, которые можно внедрить на свой сайт.
Совет: активация отображения всех ошибок в PHP
При поднятии PHP проекта на новом рабочем окружении могут возникнуть ошибки отображение которых изначально скрыто базовыми настройками. Это можно исправить, прописав несколько команд.
Агент
PHP парсер юзер агента с поддержкой Laravel, работающий на базе библиотеки Mobile Detect.
Архивировать и разархивировать файлы через PHP
При создании разных программ через php вам может пригодиться метод создания архивов на сервере, в которые можно поместить не только файлы, но и целые папки. Большим преимуществом php является присутствие встроенного функционала для работы с zip архивами.
Создадим архив из файлов. Для этого используем следующий код:
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.
Теперь разархивируем файлы с произвольного архива. Для этого используем код:
$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
Php скрипт для архивирования
Создание ZIP-архивов на PHP тема интересна большому числу людей, ведь ZIP-архивирование на PHP весьма популярная тема. И в этой статье покажем пример, как создаётся ZIP-архив через PHP-скрипт.
Пример создания ZIP-архива:
В результате выполнения данного скрипта появится ZIP-архив, у которого в корне будет лежать файл index.php, а также будет создана директория styles, в которой будет находиться файл style.css. Я думаю, что это всё очевидно и логично. А теперь комментирую, что мы с Вами делали:
Создали объект ZipArchive с помощью конструктора.
Создали архив с помощью метода open() объекта ZipArchive. Мы передали название архива (archive.zip) и константу ZIPARCHIVE::CREATE, которая сообщает, если архива не существует, то его надо создать.
Метод addFile() добавляет в архив файлы. Сначала мы добавили файл «index.php», который находится в одной директории со скриптом. Далее мы добавили файл style.css, так же указав к нему правильный путь относительно скрипта.
Метод close() завершает работу с архивом. Всегда его выполняйте, чтобы освободить ресурсы компьютера, а также избежать самых различных проблем, связанных с работой этого скрипта и других скриптов, которым необходим доступ к этому архиву.
Вот таким простым способом Вы можете создавать в автоматическом режиме ZIP-архивы с помощью PHP. В следующей статье мы с Вами разберём, как извлекать ZIP-архив через PHP.