если есть php_zip, то:
<?php
if (empty($_GET['file'])) {
echo "Не указан файл для распаковки!";
exit;
} elseif (!file_exists($_GET['file'])) {
echo "Не найден файл <b>".$_GET['file']."</b>";
exit;
} elseif (!eregi(".zip", $_GET['file'])) {
echo "Поддерживаются только <b>.zip</b> файлы";
exit;
}
$zip = zip_open($_GET['file']);
$folder = substr(str_replace("\\", "/", __FILE__), 0, strrpos(str_replace("\\", "/", __FILE__), "/"))."/";
echo "Папка <b>".$folder."</b><br />\n";
$files = 0;
$folders = 0;
if ($zip) {
while ($zip_entry = zip_read($zip)) {
echo "<br />\n";
$name = $folder . zip_entry_name($zip_entry);
echo $name;
if($name[strlen($name) - 1] == '/') {
mkdir($name, 0755);
$folders++;
} elseif (zip_entry_open($zip, $zip_entry, "r")) {
$buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
$file = fopen($name, "w");
if ($file) {
fwrite($file, $buf);
fclose($file);
$files++;
} else {
echo "Ошибка при открытии файла <b>".$name."</b>";
}
zip_entry_close($zip_entry);
}
}
echo "Готово! Разархивировано <b>".$files."</b> файлов и <b>".$folders."</b> папок";
zip_close($zip);
} else {
echo "Ошибка при открытии архива!";
}
?>
Добавлено через 3 минуты
а вообще очень мазовая библиотека тут: