Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/12/2009, 11:29
marcosnc_08
 
Fecha de Ingreso: octubre-2008
Ubicación: Bs As
Mensajes: 128
Antigüedad: 15 años, 6 meses
Puntos: 0
De acuerdo Ayuda con Script para compresion en zip

Hola genteee!, como les va?

Mi problema es el siguiente haber si a alguien se lo ocurre como arreglarlo.

Este script comprime los archivos:
Código PHP:
<?php

class zip{
   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"0);
      
$fr .= pack("V"0);
      
$fr .= pack("V"0);
 
      
$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 );
      
$cdrec .= $name;
 
      
$this -> ctrl_dir[] = $cdrec;
      
$this -> old_offset $new_offset;
      return;
   }
 
   function 
add_fileFromString($data,$name){
      
$name str_replace("""/"$name);
      
$unc_len strlen($data);
      
$crc crc32($data);
      
$zdata gzcompress($data);
      
$zdata substr ($zdata2, -4);
      
$c_len strlen($zdata);
      
$fr "\x50\x4b\x03\x04";
      
$fr .= "\x14\x00";
      
$fr .= "\x00\x00";
      
$fr .= "\x08\x00";
      
$fr .= "\x00\x00\x00\x00";
      
$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 
add_file($data$name) {
      
$fp fopen($data,"r");
      
$data fread($fp,filesize($data));
      
fclose($fp);
      
$name str_replace("""/"$name);
      
$unc_len strlen($data);
      
$crc crc32($data);
      
$zdata gzcompress($data);
      
$zdata substr ($zdata2, -4);
      
$c_len strlen($zdata);
      
$fr "\x50\x4b\x03\x04";
      
$fr .= "\x14\x00";
      
$fr .= "\x00\x00";
      
$fr .= "\x08\x00";
      
$fr .= "\x00\x00\x00\x00";
      
$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";
   }
}
?>
Funciona perfecto.

Este sirve para seleccionar los archivos para comprimir:

Código PHP:
<?php

/*
Comienzo del script que genera el bukup de los archivos y comprime el .sql de la base de datos creada previamente

Autor: Marcos Comelli
Copyright: 2009

Parte del Script que comprime todos los archivos y lo genera con el nombre de la fecha en que se creo
*/

/*valor de la variable nombre_archivo es igual a la fecha*/

/*Defino la variable para los nombres de los archivos*/
$nombre_archivo time();
$archivo date('j n Y g i A');
$zip = new zip();
 
//Aca en la linea de abajo se ingresan los archivos a comprimir
$zip->add_fileFromString("Esto es una prueba\n Estoy probando hola 1, 2, 3 probando... ""/bukup/content");
 
$fileName substr(md5(rand()),0,5).".$archivo.zip";
$fd fopen ($fileName"wb");
$out fwrite ($fd$zip->file());
fclose ($fd);

echo 
date('j n Y g i A');

?>
Mi problema es que en la ruta del archivo para comprimir no puedo poner una carpeta, solo puedo ingresar archivos con su correspondiente formato.
__________________
Marcos.