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

Publié par pidjey dans php5

J'ai bien lu mais c'est vraiment trop fort et trop dur pour le moment, je sais pas vraiment comprendre vos syntaxes, elles sont enormes et moi, je ne suis qu'encore un debutant en PHP et il faudrait p...

Publié par medfayz dans java

hi everybody thanks for the code , and please can any one help me to fix that exception.
javax.media.NoPlayerException: Cannot find a Player for :vfw:0

thanks

Publié par Absolut dans news

Bonjour,
Dans l'outil de localisation d'IP, je ne comprends pas le sens de la rubrique precision dans le Rapport d'analyse de l'adresse IP ex 1/10, 9/10, bonne, ....
Merci

Publié par sakhr dans tuto

merci b c pour les plusieurs tailles d'images

Publié par Kachwahed dans CMS

Merci, ca marche avec moi, mais apès avoir changer:
Edit1.Text := Format('%d bits, %d x %d',[Bits, HRes, VRes]);
par:
Edit1.Text := Format('%d bits, %d x %d',[Bits, HorizRes, VertRes]); <...