Zipper un dossier

jc9123
Invité n'ayant pas de compte PHPfrance

29 juin 2009, 16:01

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

jc9123
Invité n'ayant pas de compte PHPfrance

29 juin 2009, 16:34

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');
?>

ViPHP
ViPHP | 1136 Messages

29 juin 2009, 16:40

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.