Classe permettant de zipper une liste de fichiers ou un dossier (et sous-dossiers) en automatique

Soyez le premier à donner votre avis sur cette source.

Vue 13 298 fois - Téléchargée 1 662 fois

Description

Ce code est issu d'une remarque trouvée sur le site http://www.phpcs.com
A la suite d'une source de Malik7934 montrant un formulaire d'upload permettant de créer un fichier ZIP à partir de ce fichier envoyé, un commentaire demandait s'il serait possible de gérer un dossier ou une liste de fichiers de façon automatique

Du coup l'idée m'est venue d'écrire ce code pour mon besoin propre :
faire une sauvegarde Zippée avant une mise à jour ou un test comportant des opérations complexes, etc.

Si le fichier Zip à créer n'est pas nommé, un nom automatique lui est affecté : 'Sauvegarde JJ/MM/AAAA HhMmSs.zip'

Cette classe s'appuie sur l'excellente bibliothèque pclZip découverte par hasard sur le formulaire cité ci-dessus via http://www.phpcs.com.

Le site : http://www.phpconcept.net/phpzip/index.php permet de récupérer la dernière version (2.5 à la rédaction de ces lignes)
ainsi que la documentation. D'autres sources sont d'ailleurs mises à disposition pour gérer d'autres formats de compression...

La classe Zipper a donc pour but de simplifier à l'extrême la création d'une archive ZIP contenant :
- soit une liste de fichiers
- soit un dossier et tout son contenu.

testé sous PHP5 en local, vous devriez pouvoir l'utiliser en PHP4 en modifiant les mots protected par var juste en-dessous de ces lignes d'explication. Je ne l'ai pas testé sur une serveur Linux !

Les methodes fournies permettent d'en modifier le fonctionnement, mais quasiment rien n'est obligatoire...

REMARQUE : merci aux gourous de ne pas m'assassiner, ce code est ma première contribution faite essentiellement pour remercier tous ceux dont j'ai pu lire et utiliser des bouts de code voire parfois la totalité dans mes projets.

AUTRE REMARQUE : ce code est aussi mon premier code objet... ma première classe. Issu de la vieille école de programmation, j'ai mis longtemps à trouver un intérêt aux objets (j'ai honte...)

Merci de vos critiques et remarques dès l'instant où c'est constructif !

Source / Exemple :


// Voilà un appel : le plus simple possible :

$archive = new Zipper();				// Création de l'objet
$archive->DefinitNomDossierAZipper('Galeries');		// Indique le dossier à explorer et dont le contenu doit être 'Zippé'
if(! $archive->ZipperFichiers()){ echo 'ECHEC'; }	// Affiche un message en cas d'échec

Conclusion :


Je pensais éventuellement à envoyer ce ZIP par mail en fin de traitement si on le demande : cela étant, il y a plein de classes disponibles ici capable de le faire...

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1
Date d'inscription
mardi 30 décembre 2003
Statut
Membre
Dernière intervention
4 février 2010

Merci pour ce script très pratique. Je l'utilise pour zipper mon site joomla hébergé chez free.
j'ai juste eu à ajouter un .htaccess à la racine contenant les lignes

php 1
SetEnv PHP_VER 5

afin d'utiliser php5
Messages postés
7
Date d'inscription
mardi 17 juin 2008
Statut
Membre
Dernière intervention
16 octobre 2009

Bonjour à tous,

J'ai trouver cette source (et je n'en ais pas trouvé d'autres du même genre...) mais je n'arrive pas à la faire fonctionner sous php 4.XX en effet je me retrouve avec le message d'erreur cité plus haut :

"Parse error: parse error, expecting `T_OLD_FUNCTION' ...."

J'ai bien lu la note qui dit :

"testé sous PHP5, vous devriez pouvoir l'utiliser en PHP4 en modifiant les mots protected par var juste en-dessous de ces lignes d'explication"

Mais j'ai beau retourner cette phrase dans tous les sens, je ne comprend pas quoi et comment faire.

Merci à ceux qui sauront m'aider, en espérant que ce comm ne passe pas inaperçu.

A bientôt ^^
Messages postés
15
Date d'inscription
mercredi 5 octobre 2005
Statut
Membre
Dernière intervention
27 juillet 2020

j'arrive un peu tard, pas trop tard j'espère, pour dire que je n'arrive pas à faire fonctionner le script. Ce serait pour le mettre sur mon site à la racine et quand je l'appel, il me zip mon site dans un fichier, c'est bien pour ça ?
Messages postés
31
Date d'inscription
mardi 13 avril 2004
Statut
Membre
Dernière intervention
3 mars 2008

Comme indiqué plus haut :

<?php
include('Class_Zipper.php');
// Voilà un appel : le plus simple possible :

$archive = new Zipper(); // Création de l'objet
$archive->DefinitNomDossierAZipper('../Classe Zip'); // Indique le dossier à explorer et dont le contenu doit être 'Zippé'
if(! $archive->ZipperFichiers()){ echo 'ECHEC'; } // Affiche un message en cas d'échec
?>

et voici le résultat avec PHP5 version 5.2.3 (ôter les étoiles) :
***************************
Le contenu a été zippé et porte maintenant comme nom (archives/Sauvegarde 2007-11-04 22h11m03s.zip).
Il est accessible en cliquant sur ce lien
***************************

Le dossier "archives" qui n'existait pas a été créé...
Bonne utilisation !
Messages postés
2
Date d'inscription
mercredi 21 décembre 2005
Statut
Membre
Dernière intervention
4 novembre 2007

Bonjour

ça marche pas ton truc mon ami !
voilà le message

Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in c:\program files\easyphp1-8\www\class_zipper.php on line 64

alors essaye de me dire c'est quoi le problème, alors avec php5.3 c'est rien aucune réponse !, aucune interface !

j'attend une réponse mon ami

salut
Afficher les 20 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.