Разработка PHP скрипта для извлечения файлов из zip архива
В прошлый раз я рассказывал о том, как создать zip архив с помощью PHP. Мы написали небольшой PHP скрипт, который создает zip архив файлами из заданной папки.
Сегодня я покажу, как выполнить обратную операцию, т.е. извлечь файлы из архива.
Напомню, что для работы с архивом необходимо создать объект типа ZipArchive. С помощью методов этого объекта можно добавлять/удалять/извлекать файлы, получать информацию об архиве и т.д.
Извлечение выполняется в три этапа:
1) открываем архив (с помощью метода open(…));
2) извлекаем файлы (метод extractTo(…));
3) закрываем архив (метод close()).
Теперь посмотрим пример:
-
<?php
-
//папка с архивом
-
$archive_dir = "E:/archiveFolder/";
-
//папка в которой будут размещены файлы архива
-
$dest_dir = "E:/destFolder/";
-
-
//открываем zip архив
-
$zip = new ZipArchive();
-
//имя файла архива
-
$fileName = $archive_dir."backup_6_11_2007_08_11_09.zip";
-
if ($zip->open($fileName) !== true) {
-
fwrite(STDERR, "Error while openning archive file");
-
exit(1);
-
}
-
-
//читаем сведения об архиве
-
fwrite(STDOUT, "Number of files: ".$zip->numFiles."\n");
-
fwrite(STDOUT, "status: ".$zip->status."\n");
-
fwrite(STDOUT, "statusSys: ".$zip->statusSys."\n");
-
fwrite(STDOUT, "filename: ".$zip->filename."\n");
-
fwrite(STDOUT, "comment: ".$zip->comment."\n");
-
-
//извлекаем файлы
-
$zip->extractTo($dest_dir);
-
-
//закрываем архив
-
$zip->close();
-
-
fwrite(STDOUT, "Files extracted\n");
-
-
exit(0);
-
?>
Как видите, скрипт достаточно простой.
В переменных $archive_dir, $dest_dir, $fileName мы задаем имя папки с архивом, имя папки, в которую будут распакованы файлы, и имя архива (предполагается, что архив находится в папке $archive_dir).
После этого мы открываем архив (строка 11). Обратите внимание, что здесь используется тот же метод open(), что и при создании архива, но константа ZIPARCHIVE::CREATE не указывается. Мы собираемся что-то извлечь из архива, значит, он должен существовать.
Затем мы выводим информацию об архиве (строки 17-21) и распаковываем его (строка 24). Метод extractTo(…) принимает только два параметра. Первый – имя папки, в которую будет извлечено содержимое архива. Второй (необязательный) – имена объектов, которые необходимо извлечь. В нашем примере второй параметр не задан. Это означает, что будет распаковано все содержимое архива.
После окончания работы с архивом его необходимо закрыть, что мы и сделали в строке 27.
Запустить скрипт можно командой:
php путь_к_папке_со_скриптом\имя_скрипта.php
Если вы все сделали правильно, то в папке “E:/destFolder/” вы найдете извлеченные файлы.
Постовой
Очень полезная вещь в доме – makita hr 2440
Понравилась статья? Подписывайтесь на продолжение
!
Опубликовано в PHP Комментарии (9) »
Комментарии (9)
Вы можете отслеживать обсуждение записи с помощью RSS 2.0 ![]()
Вы также можете оставить комментарий, или трекбек с Вашего сайта.









Как сделать так, чтобы папки из архива также извлекались?
Они должны извлекаться. Напишите, пожалуйста, какие ошибки возникают.
Ошибка исчезла, но раньше выводил ошибку извлечения файла.
Может раньше прав на запись в папку не было?
Да, так и есть. Хостинг работает только с правами 777 на каждую папку.
А почему я немогу открыть файл…..
Например я скачал программу открываю через Winrar всё номрально но тот файл который мне нужно открыть он окрываеться и там как текстовой документ…..
Помогите пожалуйста….
Вы извлекли файл из архива? Или кликнули по нему прямо в окне Winrar?
Если в архиве находится программа, то её нужно извлечь, проверить расширение (правый клик, Свойства), после этого запускать. И, конечно, проверить антивирусом.