Hey Matt,

Below is a cut down version of how I'm doing it. I lifted most of it right
out of the manual examples. It assumes a single entry in each compressed
file.

function uncompress($filepath, $new_filename, $compression)
{
    if($compression == COMPRESSION_GZIP)
    {
        $zp = gzopen( $filepath, "r" );
        $fp = fopen( $new_filename, "w");
        if(! $fp )
        {
            return BDBERR_TITLE_GZ_FILE_COPY_FAILED;
        }

        $buffer = '';
        if( $zp )
        {
             while(! gzeof($zp))
             {
                    $buffer = gzgets ($zp, 4096);
                    if( $buffer === FALSE)
                    {
                        fclose($fp);
                        unlink($new_filename);
                        return BDBERR_TITLE_GZ_FILE_COPY_FAILED;
                    }
                    fputs($fp, $buffer);
             }
             gzclose( $zp );
             fclose( $fp );
        }
        else
        {
            return BDBERR_TITLE_GZ_FILE_COPY_FAILED;
        }
        return SUCCESS;
    }
    else if($compression == COMPRESSION_BZIP2)
    {
        $bz_fp = fopen( $filepath, "r");
        $bzipped_contents = fread ($bz_fp, filesize($filepath) );
        fclose($bz_fp);

        $uncompressed = bzdecompress( $bzipped_contents );

        $fp = fopen( $new_filename, "w");
        if(! $fp )
        {
            return BDBERR_TITLE_BZ2_FILE_COPY_FAILED;
        }
        if( ! fwrite($fp, $uncompressed) )
        {
            return BDBERR_TITLE_BZ2_FILE_COPY_FAILED;
        }
        fclose($fp);
        return SUCCESS;
    }
    else if($compression == COMPRESSION_ZIP)
    {
        $zip = zip_open($filepath);

        if ($zip)
        {
            $zip_entry = zip_read($zip);
            if (zip_entry_open($zip, $zip_entry, "r"))
            {
                $unzipped_contents = zip_entry_read($zip_entry,
zip_entry_filesize($zip_entry));
                zip_entry_close($zip_entry);
            }
            zip_close($zip);

            $fp = fopen( $new_filename, "w");
            if(! $fp )
            {
                return BDBERR_TITLE_ZIP_FILE_COPY_FAILED;
            }
            if( ! fwrite($fp, $unzipped_contents) )
            {
                return BDBERR_TITLE_ZIP_FILE_COPY_FAILED;
            }
            fclose($fp);
        }
        else
        {
            return BDBERR_TITLE_ZIP_FILE_COPY_FAILED;
        }
    }
    else
    {
        return BDBERR_UNKNOWN_COMPRESSION_METHOD;
    }
}



-----Original Message-----
From: Matt Palermo [mailto:[EMAIL PROTECTED] 
Sent: Monday, August 04, 2003 7:33 PM
To: [EMAIL PROTECTED]
Subject: [PHP] Extracting Compressed Files


Does anyone know of easy ways to be able to extract all
files/folders/subfolders from different types of compressed files (.zip,
.tar.gz, etc.)?  If anyone could help me out with this, I would really
appreciate it.  
 
Thanks,
 
Matt

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to