Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Zip архивация
 
 автор: saider   (23.10.2009 в 01:24)   письмо автору
 
 

Всем доброго времени суток, у меня вод такой вопрос: допустим у нас есть файл test.dat, его нужно с помощью PHP добавить в архив zip, как это можно сделать? если можно, то приведите наглядный пример!

  Ответить  
 
 автор: Николай2357   (23.10.2009 в 08:52)   письмо автору
 
   для: saider   (23.10.2009 в 01:24)
 

Вот тут можно порыться.

  Ответить  
 
 автор: Ramilka   (24.10.2009 в 14:47)   письмо автору
28.4 Кб
 
   для: saider   (23.10.2009 в 01:24)
 

Смотрите приложенные файлы

  Ответить  
 
 автор: saider   (24.10.2009 в 18:05)   письмо автору
 
   для: Ramilka   (24.10.2009 в 14:47)
 

А что, по проще не какого PHP скриптика нету? что бы хотяб просто создовал zip архив, или без той библиотеки, pclzip.lib.php никуда не денишься?

  Ответить  
 
 автор: Max_Ivanov   (27.10.2009 в 15:05)   письмо автору
 
   для: saider   (24.10.2009 в 18:05)
 

<?
class zipfile
{

    var 
$datasec = array(); 
    var 
$ctrl_dir = array(); 
    var 
$eof_ctrl_dir "\x50\x4b\x05\x06\x00\x00\x00\x00"
    var 
$old_offset 0;

    function 
add_dir($name)

    {
        
$name str_replace("\\""/"$name);

        
$fr "\x50\x4b\x03\x04";
        
$fr .= "\x0a\x00";   
        
$fr .= "\x00\x00";   
        
$fr .= "\x00\x00";   
        
$fr .= "\x00\x00\x00\x00"
        
$fr .= pack("V",0); 
        
$fr .= pack("V",0); 
        
$fr .= pack("V",0); 
        
$fr .= pack("v"strlen($name) ); 
        
$fr .= pack("v"); 
        
$fr .= $name;
        
$fr .= pack("V",$crc); 
        
$fr .= pack("V",$c_len); 
        
$fr .= pack("V",$unc_len); 
        
$this -> datasec[] = $fr;
        
$new_offset strlen(implode(""$this->datasec));
        
$cdrec "\x50\x4b\x01\x02";
        
$cdrec .="\x00\x00";    
        
$cdrec .="\x0a\x00";    
        
$cdrec .="\x00\x00";    
        
$cdrec .="\x00\x00";   
        
$cdrec .="\x00\x00\x00\x00"
        
$cdrec .= pack("V",0); 
        
$cdrec .= pack("V",0); 
        
$cdrec .= pack("V",0); 
        
$cdrec .= pack("v"strlen($name) ); 
        
$cdrec .= pack("v"); 
        
$cdrec .= pack("v"); 
        
$cdrec .= pack("v"); 
        
$cdrec .= pack("v"); 
        
$ext "\x00\x00\x10\x00";
        
$ext "\xff\xff\xff\xff";
        
$cdrec .= pack("V"16 ); 
        
$cdrec .= pack("V"$this -> old_offset ); 
        
$this -> old_offset $new_offset;
        
$cdrec .= $name;
        
$this -> ctrl_dir[] = $cdrec;
    }


    function 
add_file($data$name)
    { 
$name str_replace("\\""/"$name);
$fr "\x50\x4b\x03\x04";
        
$fr .= "\x14\x00";    
        
$fr .= "\x00\x00";    
        
$fr .= "\x08\x00";    
        
$fr .= "\x00\x00\x00\x00"

        
$unc_len strlen($data);
        
$crc crc32($data);
        
$zdata gzcompress($data);
        
$zdata substrsubstr($zdata0strlen($zdata) - 4), 2); 
        
$c_len strlen($zdata);
        
$fr .= pack("V",$crc); 
        
$fr .= pack("V",$c_len); 
        
$fr .= pack("V",$unc_len); 
        
$fr .= pack("v"strlen($name) ); 
        
$fr .= pack("v"); 
        
$fr .= $name;
        
$fr .= $zdata;
        
$fr .= pack("V",$crc); 
        
$fr .= pack("V",$c_len); 
        
$fr .= pack("V",$unc_len); 
        
$this -> datasec[] = $fr;
        
$new_offset strlen(implode(""$this->datasec));
        
$cdrec "\x50\x4b\x01\x02";
        
$cdrec .="\x00\x00";    
        
$cdrec .="\x14\x00";  
        
$cdrec .="\x00\x00";   
        
$cdrec .="\x08\x00";   
        
$cdrec .="\x00\x00\x00\x00"
        
$cdrec .= pack("V",$crc); 
        
$cdrec .= pack("V",$c_len); 
        
$cdrec .= pack("V",$unc_len);
        
$cdrec .= pack("v"strlen($name) ); 
        
$cdrec .= pack("v"); 
        
$cdrec .= pack("v"); 
        
$cdrec .= pack("v"); 
        
$cdrec .= pack("v"); 
        
$cdrec .= pack("V"32 ); 

        
$cdrec .= pack("V"$this -> old_offset ); 
        
$this -> old_offset $new_offset;

        
$cdrec .= $name;
        
$this -> ctrl_dir[] = $cdrec;
    }

    function 
file() { 
        
$data implode(""$this -> datasec);
        
$ctrldir implode(""$this -> ctrl_dir);
        return
            
$data.
            
$ctrldir.
            
$this -> eof_ctrl_dir.
            
pack("v"sizeof($this -> ctrl_dir)).    
            
pack("v"sizeof($this -> ctrl_dir)). 
            
pack("V"strlen($ctrldir)).   
            
pack("V"strlen($data)).    
            
"\x00\x00"; }}

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования