1024) { $times++; $size = $size/1024; } $size2 = floor($size); $rest = $size - $size2; $rest = $rest * 100; $decimal = floor($rest); $addsize = $decimal; if ($decimal<10) $addsize .= '0'; if ($times == 0) $addsize = $size2; else $addsize = $size2.$comma.substr($addsize,0,2); switch ($times) { case 0 : $mega = ' bytes'; break; case 1 : $mega = ' KB'; break; case 2 : $mega = ' MB'; break; case 3 : $mega = ' GB'; break; case 4 : $mega = ' TB'; break; } $addsize .= $mega; return $addsize; } // Рекурсивная функция для удаления каталога function removeDir( $dir ) { if ( $d = opendir($dir) ) { while( ($file = readdir($d)) !== false ) { if ( is_file($dir.'/'.$file) ) { unlink($dir.'/'.$file); } else if ( is_dir($dir.'/'.$file) and $file != '.' and $file != '..' ) { removeDir($dir.'/'.$file); } } closedir($d); } return rmdir($dir); } $dir = '.'; if ( isset( $_GET['dir'] ) ) $dir = $_GET['dir']; // ПЕРВАЯ ЧАСТЬ СКРИПТА - ПОКАЗАТЬ СПИСОК ДИРЕКТОРИЙ И ФАЙЛОВ if ( is_dir($dir) ) { chdir($dir); $basedir = getcwd(); $basedir = str_replace('\\','/', $basedir); // Родительская директория $parent = dirname($basedir); $cur = $basedir; // Путь до текущей директории $path = ''; while (substr($cur, 0, 1) == '/') { $cur = substr($cur, 1, strlen($cur)); $path .= '/'; } $p_out = $path; while (strlen($cur) > 0) { $k = strpos($cur,'/'); if (!strpos($cur,'/')) $k = strlen($cur); $s = substr($cur,0,$k); $cur = substr($cur, $k+1, strlen($cur)); $path .= $s.'/'; $p_out .= ''.$s.'/'; } echo '

Текущая директория: '.$p_out.'

'; echo '
 ..
'."\n"; // Список файлов и директорий текущей директории $files = array(); $folders = array(); $zipFiles = array(); if ( $dh = opendir( getcwd() ) ) { while (($file = readdir($dh)) !== false) { if ($file != '..' && $file != '.') { if ( is_file( $file ) ) { $files[] = $file; if ( strtolower( getFileExt($file) ) == 'zip' ) $zipFiles[] = $file; } if ( is_dir( $file ) ) $folders[] = $file; } } closedir($dh); } echo '

'."\n"; echo ' .
'."\n"; // Выводим список поддерикторий текущей директории foreach ($folders as $file) { echo '   '.$file.'
'."\n"; } // Выводим список файлов текущей директории foreach ($files as $file) { echo '    '.$file.'
'."\n"; } echo '

'."\n"; if ( count( $zipFiles ) > 0 ) { echo '

ZIP-архивы в текущей директории:

'."\n"; // Выводим список архивов в текущей директории echo ''."\n"; foreach ($zipFiles as $file) { echo ''; echo ''; echo ''; echo ''; echo ''."\n"; echo ''."\n"; } echo '
'.$file.'ПросмотрИзвлечь
'."\n"; } } // ВТОРАЯ ЧАСТЬ - ИЗВЛЕЧЕНИЕ ФАЙЛОВ ИЗ АРХИВА if ( isset( $_GET['unzip'] ) ) $unzip = $_GET['unzip']; if (isset( $unzip ) && is_file($unzip)) { $zip = new PclZip($unzip); if (($list = $zip->listContent()) == 0) die('Ошибка: '.$zip->errorInfo(true)); // Данные об архиве $compSize = 0; // Размер в сжатом виде $uncompSize = 0; // Размер распакованного архива $fold = 0; // Количество директорий в архиве $fil = 0; // Количество файлов в архиве for ( $i = 0; $i < sizeof($list); $i++ ) { if ($list[$i]['folder'] == 1) { $fold++; $dirs[$fold] = $list[$i]['stored_filename']; // Создаем папки, куда будут распакованы файлы архива if ($_GET['action'] == 'unzip') { $dirname = $list[$i]['stored_filename']; $dirname = substr($dirname, 0, strlen($dirname)-1); // Если такая дериктория уже существует - удаляем // ее вместе со всем содержимым if ( is_dir($basedir.'/'.$dirname) ) removeDir( $basedir.'/'.$dirname ); mkdir($basedir.'/'.$dirname); chmod($basedir.'/'.$dirname, 0777); } } else { $fil++; } $compSize += $list[$i]['compressed_size']; $uncompSize += $list[$i]['size']; } echo '

Информация об архиве '.$unzip.'

'."\n"; echo '

'."\n"; echo $fil.' файлов и '.$fold.' директорий
'."\n"; echo 'Размер в сжатом виде: '.getFileSize($compSize).'
'."\n"; echo 'Размер в распакованном виде: '.getFileSize($uncompSize).'
'."\n"; echo '

'."\n"; if ($_GET['action'] == 'unzip') { echo '

Извлечение файлов из архива...

'."\n"; $zip->extract(''); echo '

Архив распакован.

'."\n"; } if ($_GET['action'] == 'view') { echo '

'."\n"; for ( $i = 0; $i < sizeof($list); $i++ ) { if ($list[$i]['folder'] == 1) { echo '  '.$list[$i]['stored_filename'].'
'."\n"; } else { echo '  '.$list[$i]['stored_filename']; echo ' ('.getFileSize($list[$i]['size']).')
'."\n"; } } echo '

'."\n"; } } ?>