Foros del Web » Programando para Internet » PHP »

Ayuda con Script para compresion en zip

Estas en el tema de Ayuda con Script para compresion en zip en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 23/12/2009, 11:28
 
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

/*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.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:43.