Квартиры, дома, земельные участки Краснодарского края без посредников. Объявления собственников недвижимости.
Реклама здесь
Главная
Примеры PHP Примеры JavaScript Примеры Ajax Примеры CSS,HTML

Просмотр ZIP-архива

Простой просмотр zip-архивов. Вызывать: zip.php?arh=путь_к_файлу


<?php
// вспомогательная функция, выводит размер файла
function sizer($s){
$o=1;
while(
$s>1024){
   
$s round($s 10241);
   
$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-архива.


<?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_entryzip_entry_filesize($zip_entry));
            echo 
"$buf\n";

            
zip_entry_close($zip_entry);
        }
        echo 
"\n";
    }
    
zip_close($zip);
}
?>
Скопировать в буфер
Школа Сетевого Маркетинга - курсы по 1 с.

© Copyright 2008-2012 by KDG