Простой просмотр zip-архивов. Вызывать: zip.php?arh=путь_к_файлу
<?php
// вспомогательная функция, выводит размер файла
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'Ошибка открытия архива!';
?>Скопировать в буфер
<?php
$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);
}
?>Скопировать в буфер
© Copyright 2008-2012 by KDG