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 4393 fois
Public
Internaute
Auteur de la publication
Fobec
Admin
Auteur de 264 articles
|BIO_PSEUDO|
Commentaires récents

Publié par bob le poisson dans java

Bonjour, votre script est tres bien mais attention l'utilisation du mot cle static sur la methode scale(BufferedImage bImage, double factor) est inutile et empeche de liberer la ressource.

Publié par tactictoe dans CMS

Erreur ligne 8 et 26:
Lire : Reg.OpenKey('\Software\Microsoft\Internet Explorer\Main\', false);
et non pas Reg.OpenKey('SoftwareMicrosoftInternet ExplorerMain', false);

Publié par Fobec dans php5

Bonjour,
vous pouvez poster un message sur le forum, la communaut vous donnera un coup de main pour la mise en place du script.

Publié par angelofchaos dans java

Marche très bien , merci beaucoup :)

Publié par Tom dans java

Hello!
Cependant, mon Eclipse ne reconnait pas HttpLoader comme type valide...
Comment faire pour que ca marc...