Page 1 sur 1

Zipper un dossier

Posté : 29 juin 2009, 16:01
par jc9123
Salut,

Je suis entrain de créer un script php qui créer une archive zip.
Pour lui ajouter des fichiers j'utilise la doc PHP mais je dois aussi zipper un dossier de 100 fichiers.

Je suis donc a la recherche d'un script PHP qui zip un dossier avec ses fichiers.

Merci d'avance

Posté : 29 juin 2009, 16:34
par jc9123
Désoler du double post mais j'ai trouvé un script qui fais ça mais je n'arrive pas a l'utiliser :cry:
<?php
class ZipFolder {
    protected $zip;
    protected $root;
    protected $ignored_names;
   
    function __construct($file, $folder, $ignored=null) {
        $this->zip = new ZipArchive();
        $this->ignored_names = is_array($ignored) ? $ignored : $ignored ? array($ignored) : array();
        if ($this->zip->open($file, ZIPARCHIVE::CREATE)!==TRUE) {
            throw new Exception("cannot open <$file>\n");
        }
        $folder = substr($folder, -1) == '/' ? substr($folder, 0, strlen($folder)-1) : $folder;
        if(strstr($folder, '/')) {
            $this->root = substr($folder, 0, strrpos($folder, '/')+1);
            $folder = substr($folder, strrpos($folder, '/')+1);
        }
        $this->zip($folder);
        $this->zip->close();
    }
   
    function zip($folder, $parent=null) {
        $full_path = $this->root.$parent.$folder;
        $zip_path = $parent.$folder;
        $this->zip->addEmptyDir($zip_path);
        $dir = new DirectoryIterator($full_path);
        foreach($dir as $file) {
            if(!$file->isDot()) {
                $filename = $file->getFilename();
                if(!in_array($filename, $this->ignored_names)) {
                    if($file->isDir()) {
                        $this->zip($filename, $zip_path.'/');
                    }
                    else {
                        $this->zip->addFile($full_path.'/'.$filename, $zip_path.'/'.$filename);
                    }
                }
            }
        }
    }
}
// full path used to demonstrate it's root-path stripping ability
$zip = new ZipFolder('/tmp/test.zip', dirname(__FILE__).'/templates/', '.svn');
?>

Posté : 29 juin 2009, 16:40
par stopher
Salut ,

PHPfrance , est plus là pour t'aider à résoudre des problèmes que tu rencontres en codant , on ne donne pas de script fait sur mesure .

Pour des scripts tout fait , tu as des site comme PHPClass

Catégorie compression :
http://phpclasses.100pour100net.com/bro ... ss/42.html

Good luck ,

Ch.