Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/12/2009, 11:28
marcosnc_08
 
Fecha de Ingreso: octubre-2008
Ubicación: Bs As
Mensajes: 128
Antigüedad: 18 años
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", 0 );
      
$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", 0 );
      
$cdrec .= pack("v", 0 );
      
$cdrec .= pack("v", 0 );
      
$cdrec .= pack("v", 0 );
      
$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 ($zdata, 2, -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", 0 );
      
$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", 0 );
      
$cdrec .= pack("v", 0 );
      
$cdrec .= pack("v", 0 );
      
$cdrec .= pack("v", 0 );
      
$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 ($zdata, 2, -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", 0 );
      
$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", 0 );
      
$cdrec .= pack("v", 0 );
      
$cdrec .= pack("v", 0 );
      
$cdrec .= pack("v", 0 );
      
$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

/*Defino la variable para los nombres de los archivos*/
$nombre_archivo = time();
$archivo = date('j n Y g i A');

/*
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*/


$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.