PHP: Как распаковать Zip-файл в нужную директорию с помощью формы
Для работы с Zip-файлами вам не нужно устанавливать какой-либо другой дополнительный плагин. В PHP есть класс ZipArchive, который позволяет нам создать zip-файл или извлечь существующий файл. Для извлечения zip-файла используется метод extractTo() класса ZipArchive, который принимает в качестве аргумента абсолютный путь назначения.
1. Распаковать/извлечь zip-файл в том же каталоге
Предположим, что Zip-файл хранится в корневом каталоге проекта.
Создайте объект класса ZipArchive и откройте заданный zip-файл с помощью метода $zip->open().
Если он возвращает TRUE, то извлекаем файл по указанному пути ($path) с помощью метода extractTo(), передав ему значение пути в качестве аргумента.
Готовый код
<?php
// Получаем путь к проекту
define('_PATH', dirname(__FILE__));
// Имя ZIP-файла
$filename = 'zipfile.zip';
$zip = new ZipArchive;
$res = $zip->open($filename);
if ($res === TRUE) {
// Путь для извлечения
$path = _PATH . "/files/";
// Извлекаем файл
$zip->extractTo($path);
$zip->close();
echo 'Распакован успешно!';
} else {
echo 'Распаковать/извлечь не удалось!';
}
2. Распаковать/извлечь конкретный файл
С помощью элемента file можно выбрать zip-файл, который вы хотите извлечь.
Если выбранный файл достоверен, то передайте $_FILES['file']['tmp_name'] в метод open() и извлеките его по указанному пути с помощью метода extractTo().
Готовый код
<?php
// Получаем путь к проекту
define('_PATH', dirname(__FILE__));
// Разархивировать выбранный zip-файл
if (isset($_POST['unzip'])) {
$filename = $_FILES['file']['name'];
// Получаем расширение файла
$ext = pathinfo($filename, PATHINFO_EXTENSION);
$valid_ext = array('zip');
// Проверка расширения
if (in_array(strtolower($ext), $valid_ext)) {
$tmp_name = $_FILES['file']['tmp_name'];
$zip = new ZipArchive;
$res = $zip->open($tmp_name);
if ($res === TRUE) {
// Путь для распаковки
$path = _PATH . "/files/";
// Извлекаем файл
$zip->extractTo($path);
$zip->close();
echo 'Распакован успешно!';
} else {
echo 'Распаковать/извлечь не удалось!';
}
} else {
echo 'Неверный файл';
}
}
?>
<form method='post' action='' enctype='multipart/form-data'>
<!-- Разархивировать выбранный zip-файл -->
<input type='file' name='file'><br />
<input type='submit' name='unzip' value='Распаковать' />
</form>
Вывод
С помощью приведенного выше PHP-скрипта вы можете извлечь существующие zip-файлы в указанное место. Для этого необходимо передать абсолютный путь в метод extractTo() класса ZipArchive.
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.