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

Publié par fobec dans CMS

faire le menage !!!!

Publié par hozin2003 dans CMS

merci, c'est mon problème et voila j'ai trouvé la solution merci et voila un bon pas pour un débutant

Publié par pacman dans java

thanks for sharing, that s great!

Publié par Loualfcha dans CMS

Je n'arrive pas &Atilde;&nbsp; installer le logiciel<br>Message d'erreur: DeleteFile a &Atilde;&copy;chou&Atilde;&copy;; code 5<br>Acc&Atilde;&um...

Publié par hilflo dans tuto

Pour Romaingineer, essaye d'aller voir dans le fichier functions.php dans ton theme, tu dois avoir des functions wp_enqueue_style ou wp_enqueue_script, c'est la que tu pourras faire des modifs