Publié le 02/05/2012
Auteur fobec
Réseaux sociaux
0 partages
0 tweets
0 plus
0 commentaires

Compresser et extraire un fichier d'une archive zip

Depuis PHP 5.0, la compression de fichiers au format zip est simple à mettre en oeuvre. En effet, la class ZipArchive dispose de toutes les fonctionnalités pour compresser et extraire des fichiers.
Pour illustrer l'utilisation d'archive ZIP, la class foZipArchive et l'exemple ci-dessous montre comment:
- créer un fichier zip à partir de fichier,
- extraire un fichier à partir d'une archive zip.

Encapsulation de ZipArchive

La class est un helper pour l'obhet PHP ZipArchive. En fait, la class ci-dessous utilise les fonctions PHP et teste les résultats de compression ou d'extraction.
<?php
/**
* foZipArchive: Compresser et extraire un fichier d'une archive zip
*
* @source http://www.fobec.com/php5/1115/compresser-extraire-fichier-une-archive-zip.html
* @copyright Fobec.com
*/
class foZipArchive {
 
/**
* Compresser des fichiers dans une archive ZIP
* @param $filename
* @param array $files
* @return boolean
*/
    public function newArchive($filename, array $files) {
        $za = new ZipArchive();
        $res = $za->open($filename, ZipArchive::CREATE);
        if ($res === TRUE) {
            foreach($files as $file) {
                if (file_exists($file)) {
                    $za->addFile($file, basename($file));
                }
            }
            $za->close();
        } else {
            return FALSE;
        }
        return file_exists($filename);
    }
 
/**
* Extraire un fichier d'une archive zip
* @param $zipname
* @param $destpath
* @param $file
* @return boolean
*/
    public function extractFile($zipname, $destpath,$file) {
        $za = new ZipArchive();
        $res = $za->open($zipname);
        if ($res === TRUE) {
            $za->extractTo($destpath, $file);
            $za->close();
        } else {
            return FALSE;
        }
        return file_exists($destpath.$file);
    }
}
?>

Exemple avec un fichier zip

L'exemple ci-dessous illustre les fonctions de base d'une archive zip:
- ajouter des fichiers à un fichier zip,
- extraire des fichiers d'une archive zip.
<?php
require_once 'foziparchive.php';
 
$zf=new foZipArchive();
//Créer un fichier zip
if ($zf->newArchive('test.zip', array('image.png','video.flv'))==TRUE) {
    echo 'ok';
}
 
//extraire un fichier d'un zip
if ($zf->extractFile('test.zip', $_SERVER['DOCUMENT_ROOT'],'image.png')==TRUE) {
    echo 'ok';
}
?>

La class foZipArchive ne révolutionne pas la compression et l'extraction de fichier dans une archive Zip. L'article sert de pense-bete pour garder les fonctions zip sous la main.

Ajouter un commentaire

Les champs marqués d'un * sont obligatoires, les adresses emails se sont pas publiées.

A lire aussi

Réseaux sociaux
Présentation de l'article
Catégorie
php5 - class
Mise a jour
02/05/2012
Visualisation
vu 4561 fois
Public
Internaute
Auteur de la publication
Fobec
Admin
Auteur de 267 articles
|BIO_PSEUDO|
Commentaires récents

Publié par adilo dans CMS

merci d\'avance monsieur le precedant

Publié par Melo12 dans php5

Super article. Merci

Publié par dieteticien-lyon dans CMS

Il existe aussi programme-dietetique.com qui est pas mal et au niveau fonctionnalit&Atilde;&copy;

Publié par JMC dans logiciel

L'adresse donnée est celle du provider et non celle de l'utilisateur apparemment, il me localise a Braine l'Alleud et je me trouve à Huy ?
Sinon génial qui en est l'auteur ?
Cordia...

Publié par Axel dans java

Bonjour,
cet exemple a ete prepare et compile sous Netbeans 7.2 ;)
S'il y a un soucis, n'hesite pas