comprimir y descomprimir

25 12 2009

hace un buen tiempo encontré un script para comprimir y otro para descomprimir usando gz, pero la odiosa pagina que no permitia el click derecho los tenia por separado.
Intente unirlos pero no funcionaban (para ser sinceros, en esa epoca no sabia ni para que usarlos), así que hoy mientras revisaba mis archivos lo encontré y revise hasta hacerlo funcionar:

<?php 
//Copyright © McAnam.com 
//mods by FCR

$sFichDestino="";

    function iComprimir($sFichOrigen, $iNivelComp = 8){ 
        global  $sFichDestino;   
        $sFichDestino = $sFichOrigen.".gz"; 
         
        if ( ! $fOrigen = @fopen($sFichOrigen, "rb")) 
            return false; 
        $sOriBin = fread($fOrigen, filesize($sFichOrigen)); 
        fclose($fOrigen); 
         
	$sDesGZ = gzdeflate($sOriBin, $iNivelComp);
        $sDesGZ = gzencode($sOriBin, $iNivelComp); 

        if ( ! $fDestino = @fopen ($sFichDestino, "wb")) 
            return false; 
        fwrite($fDestino, $sDesGZ); 
        fclose($fDestino); 

        return true; 
         
    } 

   function iDescomprimir($sFichOrigen){ 
        global $sFichDestino;
        $iTamMaxDestino = 4000000; // 4 Megas 
	$sNombre = "McAnam.des";
        
	if ( ! $fOrigen = @fopen($sFichOrigen, "rb"))
	return false;
	//$sOriGZ = fread($fOrigen, filesize($sFichOrigen));
        $sDesBin = gzread($fOrigen, $iTamMaxDestino);
	//fclose($fOrigen); 
        gzclose($fOrigen); 

	//$sDesBin = gzinflate($sOriGZ);
         
        if ( ! $fOrigen = @gzopen($sFichOrigen, "rb")) 
            return false; 
        $sDesBin = gzread($fOrigen, $iTamMaxDestino); 
        gzclose($fOrigen); 

        if (strstr($sFichOrigen, ".gz")) 
            $sFichDestino = substr($sFichOrigen, 0, strrpos($sFichOrigen, ".gz")); 
        else if (strrpos($sFichOrigen, "\\")) 
            $sFichDestino = substr($sFichOrigen, 0, strrpos($sFichOrigen, "\\") + 1).$sNombre; 
        else if (strrpos($sFichOrigen, "/")) 
            $sFichDestino = substr($sFichOrigen, 0, strrpos($sFichOrigen, "/") + 1).$sNombre; 
        else 
            $sFichDestino = $sNombre; 

        if ( ! $fDestino = fopen ($sFichDestino, "wb")) 
            return false; 
        fwrite($fDestino, $sDesBin); 
        fclose($fDestino); 

        return true; 
         
    } 
if(!$_GET['file'] || $_GET['file']==""){
	echo '<br><span "style=color:#FF0000;">?file needed</span>';
	echo '<br>iGZfunciones :  fnc= ';
	echo ' C para comprimir ';
	echo ' D para descomprimir ';
} else {
	if(!$_GET['fnc'] || ( $_GET['fnc']<>"C" && $_GET['fnc']<>"D") ){
		echo '<br>iGZfunciones :  fnc= ';
		echo ' C para comprimir ';
		echo ' D para descomprimir ';
		exit;
	}

	if(!file_exists($_GET['file'])){echo '<br><span "style=color:#FF0000;">file !exists</span>';exit;}
	if(!is_readable($_GET['file'])){echo '<br><span "style=color:#FF0000;">file !readable</span>';exit;}
	if(!is_file($_GET['file'])){echo '<br><span "style=color:#FF0000;">only files!!!</span>';exit;}
	if($_GET['fnc'] == 'D'){
	    if (iDescomprimir ($_GET['file']))
	    {
	        echo '<br>Fichero descomprimido satisfactoriamente !!!';
		echo '<br><a href="'.$sFichDestino.'">'.basename($sFichDestino).'</a>';
	    }else{
	        echo 'Se ha producido un error en la descompresión del fichero.<br>';
	        echo 'Asegúrese de que la ruta del fichero a descomprimir es valida y tiene permisos de escritura / lectura';
	    } 
	}

	if($_GET['fnc'] == 'C'){
	    if (iComprimir ($_GET['file']))
	    {
	        echo '<br>Fichero comprimido satisfactoriamente !!!';
		echo '<br><a href="'.$sFichDestino.'">'.basename($sFichDestino).'</a>';
	    }else{
	        echo 'Se ha producido un error en la compresión del fichero.<br>';
	        echo 'Asegúrese de que la ruta del fichero a comprimir es valida y tiene permisos de escritura / lectura';
	    } 
	}
}
     
?> 
Anuncios

Acciones

Information

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s




A %d blogueros les gusta esto: