require_once 'pclzip.lib.php';
$archive = new PclZip('archive.zip');
$archive->extract(PCLZIP_OPT_PATH, 'folder', PCLZIP_CB_PRE_EXTRACT, 'preExtractCallback');
// функция будет вызвана перед распаковкой очередного файла
function preExtractCallback($p_event, &$p_header)
{
// если файл уже существует, то удаляем его
if (file_exists($p_header['filename'])) {
unlink($p_header['filename']);
}
return 1;
}
//передается путь к zip архиву
public function getData($filename) {
$zip = new \ZipArchive;
$res = $zip->open($filename);
if ($res === true) {
$msg = '';
$fail = false;
if (!$zip->getFromName('1.txt')) {
$fail = true;
$msg .= 'В архиве не найден файл 1.txt. ';
}
if (!$zip->getFromName('2.txt')) {
$fail = true;
$msg .= 'В архиве не найден файл 2.txt. ';
}
if (!$zip->getFromName('3.txt')) {
$fail = true;
$msg .= 'В архиве не найден файл 3.txt. ';
}
if (!$zip->getFromName('4.txt'))
{
$fail = true;
$msg .= 'В архиве не найден файл 4.txt. ';
}
if ($fail) {
return $ms;
}
$zip->extractTo(__DIR__.'/../../../../web/uploads/DBfiles/res');
$zip->close();
return 'Файлы успешно распакованы';
}
return 'Не удалось открыть архив';
}