Регистрация Войти
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Поиск по сайту
Просмотр ZIP-архива
Простой просмотр zip-архивов. Вызывать: zip.php?arh=путь_к_файлу
// вспомогательная функция, выводит размер файла
function sizer($s){
$o=1;
while($s>1024){
$s = round($s / 1024, 1);
$o++;
}
switch($o){
case(1):
$o='b'; break;
case(2):
$o='Kb';break;
case(3):
$o='Mb';break;
case(4):
$o='Gb';break;
}
return $s.$o;
}
if(!empty($_GET['arh']))
$arh = base64_decode($_GET['arh']);
if(!is_file($arh))
die('Файла не существует!');
if(!empty($_GET['act']))
$act = $_GET['act'];
else
$act = 'main';
$zip = new ZipArchive;
if($zip->open ($arh) === TRUE){
switch($act){
case('main'):
echo'Обьектов: '.$zip->numFiles.'<br/>';
if($zip->comment != NULL)
echo'Комментарий: '.$zip->comment.'<br/>';
for ($i = 0; $i < $zip->numFiles; $i++) {
$t = $zip-> statIndex($i);
if(preg_match('/\/$/',$t['name']))
echo 'Каталог <strong>'.$t['name'].'</strong>';
else
echo '<a href="?act=pre&arh='.$_GET['arh'].'&index='.$t['index'].'">'.$t['name'].
'</a> ['.sizer($t['size']).'/'.sizer($t['comp_size']).']';
echo'<br/>';
}
break;
case('pre'):
if($info = $zip->statIndex(abs((int)$_GET['index']))){
echo 'Файл '.$info['name'].'<br/>
<a href="?act=down&arh='.$_GET['arh'].'&index='.$info['index'].'">Скачать файл</a>
<br/>
Размер запакованого файла '.sizer($info['comp_size']).' ('.$info['comp_size'].' b)<br/>
Размер распакованого файла: '.sizer($info['size']).' ('.$info['size'].' b)<br/>
Метод сжатия: '.$info['comp_method'].'<br/>';
$highlight=array('php','html','htm');
$astext=array('txt','css','ini','htaccess');
$type=substr($info['name'],strrpos($info['name'],'.')+1);
if(in_array($type, $highlight)){
highlight_string($zip->getFromIndex($info['index']));
}elseif(in_array($type, $astext)){
echo nl2br(htmlspecialchars($zip->getFromIndex($info['index'])));
}
}else
echo 'Ошибка извлечения файла!';
break;
case('down'):
$index = abs((int)$_GET['index']);
if($name = $zip->getNameIndex($index)){
header('Content-Type: application/octet-stream', true);
header('Content-Disposition: attachment; filename="'.urlencode(basename($name)).'";');
echo $zip->getFromIndex($index);
}else
echo 'Ошибка извлечения файла!';
break;
default:
echo'Не известное действие';
break;
}
$zip->close();
}else
echo'Ошибка открытия архива!';
Пример 2. Просмотр ZIP-архива
$zip = zip_open("test2.zip");
if ($zip) {
while ($zip_entry = zip_read($zip)) {
echo "Name: " . zip_entry_name($zip_entry) . "\n";
echo "Actual Filesize: " . zip_entry_filesize($zip_entry) . "\n";
echo "Compressed Size: " . zip_entry_compressedsize($zip_entry) . "\n";
echo "Compression Method: " . zip_entry_compressionmethod($zip_entry) . "\n";
if (zip_entry_open($zip, $zip_entry, "r")) {
echo "File Contents:\n";
$buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
echo "$buf\n";
zip_entry_close($zip_entry);
}
echo "\n";
}
zip_close($zip);
}
.
Прокомментировать/Отблагодарить