Foros del Web » Programando para Internet » PHP »

Generar un .rar desde php

Estas en el tema de Generar un .rar desde php en el foro de PHP en Foros del Web. Es posible desde php generar un .rar o .zip que comprima una carpeta determinada? He estado buscando y no he encontrado nada, pero por preguntar.....
  #1 (permalink)  
Antiguo 22/08/2006, 09:12
 
Fecha de Ingreso: julio-2005
Ubicación: España
Mensajes: 91
Antigüedad: 12 años, 5 meses
Puntos: 0
Generar un .rar desde php

Es posible desde php generar un .rar o .zip que comprima una carpeta determinada?

He estado buscando y no he encontrado nada, pero por preguntar..
  #2 (permalink)  
Antiguo 22/08/2006, 10:25
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 12 años, 9 meses
Puntos: 33
Echale un ojo a este link porfavor http://www.phpclasses.org/browse/package/2322.html


Saludillos.
  #3 (permalink)  
Antiguo 22/08/2006, 11:41
 
Fecha de Ingreso: julio-2005
Ubicación: España
Mensajes: 91
Antigüedad: 12 años, 5 meses
Puntos: 0
Gracias, voy a echarle un vistazo
  #4 (permalink)  
Antiguo 22/08/2006, 12:04
 
Fecha de Ingreso: julio-2005
Ubicación: España
Mensajes: 91
Antigüedad: 12 años, 5 meses
Puntos: 0
¿Porque me da este error?

Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in c:\appserv\www\createZip.inc.php on line 11

Código PHP:
<?php

/**
 * Class to dynamically create a zip file (archive)
 *
 * @author Rochak Chauhan
 */

class createZip  {  

    public 
$compressedData = array(); //LINEA 11
    
public $centralDirectory = array(); // central directory   
    
public $endOfCentralDirectory "\x50\x4b\x05\x06\x00\x00\x00\x00"//end of Central directory record
    
public $oldOffset 0;

    
/**
     * Function to create the directory where the file(s) will be unzipped
     *
     * @param $directoryName string 
     *
     */
    
    
public function addDirectory($directoryName) {
        
$directoryName str_replace("\\""/"$directoryName);  

        
$feedArrayRow "\x50\x4b\x03\x04";
        
$feedArrayRow .= "\x0a\x00";    
        
$feedArrayRow .= "\x00\x00";    
        
$feedArrayRow .= "\x00\x00";    
        
$feedArrayRow .= "\x00\x00\x00\x00"

        
$feedArrayRow .= pack("V",0); 
        
$feedArrayRow .= pack("V",0); 
        
$feedArrayRow .= pack("V",0); 
        
$feedArrayRow .= pack("v"strlen($directoryName) ); 
        
$feedArrayRow .= pack("v"); 
        
$feedArrayRow .= $directoryName;  

        
$feedArrayRow .= pack("V",0); 
        
$feedArrayRow .= pack("V",0); 
        
$feedArrayRow .= pack("V",0); 

        
$this -> compressedData[] = $feedArrayRow;
        
        
$newOffset strlen(implode(""$this->compressedData));

        
$addCentralRecord "\x50\x4b\x01\x02";
        
$addCentralRecord .="\x00\x00";    
        
$addCentralRecord .="\x0a\x00";    
        
$addCentralRecord .="\x00\x00";    
        
$addCentralRecord .="\x00\x00";    
        
$addCentralRecord .="\x00\x00\x00\x00"
        
$addCentralRecord .= pack("V",0); 
        
$addCentralRecord .= pack("V",0); 
        
$addCentralRecord .= pack("V",0); 
        
$addCentralRecord .= pack("v"strlen($directoryName) ); 
        
$addCentralRecord .= pack("v"); 
        
$addCentralRecord .= pack("v"); 
        
$addCentralRecord .= pack("v"); 
        
$addCentralRecord .= pack("v"); 
        
$ext "\x00\x00\x10\x00";
        
$ext "\xff\xff\xff\xff";  
        
$addCentralRecord .= pack("V"16 ); 

        
$addCentralRecord .= pack("V"$this -> oldOffset ); 
        
$this -> oldOffset $newOffset;

        
$addCentralRecord .= $directoryName;  

        
$this -> centralDirectory[] = $addCentralRecord;  
    }     
    
    
/**
     * Function to add file(s) to the specified directory in the archive 
     *
     * @param $directoryName string 
     *
     */
    
    
public function addFile($data$directoryName)   {
 
        
$directoryName str_replace("\\""/"$directoryName);  
    
        
$feedArrayRow "\x50\x4b\x03\x04";
        
$feedArrayRow .= "\x14\x00";    
        
$feedArrayRow .= "\x00\x00";    
        
$feedArrayRow .= "\x08\x00";    
        
$feedArrayRow .= "\x00\x00\x00\x00"

        
$uncompressedLength strlen($data);  
        
$compression crc32($data);  
        
$gzCompressedData gzcompress($data);  
        
$gzCompressedData substrsubstr($gzCompressedData0strlen($gzCompressedData) - 4), 2); 
        
$compressedLength strlen($gzCompressedData);  
        
$feedArrayRow .= pack("V",$compression); 
        
$feedArrayRow .= pack("V",$compressedLength); 
        
$feedArrayRow .= pack("V",$uncompressedLength); 
        
$feedArrayRow .= pack("v"strlen($directoryName) ); 
        
$feedArrayRow .= pack("v"); 
        
$feedArrayRow .= $directoryName;  

        
$feedArrayRow .= $gzCompressedData;  

        
$feedArrayRow .= pack("V",$compression); 
        
$feedArrayRow .= pack("V",$compressedLength); 
        
$feedArrayRow .= pack("V",$uncompressedLength); 

        
$this -> compressedData[] = $feedArrayRow;

        
$newOffset strlen(implode(""$this->compressedData));

        
$addCentralRecord "\x50\x4b\x01\x02";
        
$addCentralRecord .="\x00\x00";    
        
$addCentralRecord .="\x14\x00";    
        
$addCentralRecord .="\x00\x00";    
        
$addCentralRecord .="\x08\x00";    
        
$addCentralRecord .="\x00\x00\x00\x00"
        
$addCentralRecord .= pack("V",$compression); 
        
$addCentralRecord .= pack("V",$compressedLength); 
        
$addCentralRecord .= pack("V",$uncompressedLength); 
        
$addCentralRecord .= pack("v"strlen($directoryName) ); 
        
$addCentralRecord .= pack("v");
        
$addCentralRecord .= pack("v");
        
$addCentralRecord .= pack("v");
        
$addCentralRecord .= pack("v");
        
$addCentralRecord .= pack("V"32 ); 

        
$addCentralRecord .= pack("V"$this -> oldOffset ); 
        
$this -> oldOffset $newOffset;

        
$addCentralRecord .= $directoryName;  

        
$this -> centralDirectory[] = $addCentralRecord;  
    }

    
/**
     * Fucntion to return the zip file
     *
     * @return zipfile (archive)
     */

    
public function getZippedfile() { 

        
$data implode(""$this -> compressedData);  
        
$controlDirectory implode(""$this -> centralDirectory);  

        return   
            
$data.  
            
$controlDirectory.  
            
$this -> endOfCentralDirectory.  
            
pack("v"sizeof($this -> centralDirectory)).     
            
pack("v"sizeof($this -> centralDirectory)).     
            
pack("V"strlen($controlDirectory)).             
            
pack("V"strlen($data)).                
            
"\x00\x00";                             
    }

    
/**
     *
     * Function to force the download of the archive as soon as it is created
     *
     * @param archiveName string - name of the created archive file
     */

    
public function forceDownload($archiveName) {
        
$headerInfo '';
         
        if(
ini_get('zlib.output_compression')) {
            
ini_set('zlib.output_compression''Off');
        }

        
// Security checks
        
if( $archiveName == "" ) {
            echo 
"<html><title>Public Photo Directory - Download </title><body><BR><B>ERROR:</B> The download file was NOT SPECIFIED.</body></html>";
            exit;
        } 
        elseif ( ! 
file_exists$archiveName ) ) {
            echo 
"<html><title>Public Photo Directory - Download </title><body><BR><B>ERROR:</B> File not found.</body></html>";
            exit;
        }

        
header("Pragma: public");
        
header("Expires: 0");
        
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
        
header("Cache-Control: private",false);
        
header("Content-Type: application/zip");
        
header("Content-Disposition: attachment; filename=".basename($archiveName).";" );
        
header("Content-Transfer-Encoding: binary");
        
header("Content-Length: ".filesize($archiveName));
        
readfile("$archiveName");
        
     }

}
?>
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 22:07.