begin process at 2012 05 27 22:18:15
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichier / Disque

 > CLASSE PERMETTANT DE ZIPPER UNE LISTE DE FICHIERS OU UN DOSSIER (ET SOUS-DOSSIERS) EN AUTOMATIQUE

CLASSE PERMETTANT DE ZIPPER UNE LISTE DE FICHIERS OU UN DOSSIER (ET SOUS-DOSSIERS) EN AUTOMATIQUE


 Information sur la source

Note :
9 / 10 - par 5 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Fichier / Disque Classé sous :zip, archiver, sauvegarde, automatique, zipper Niveau :Initié Date de création :03/07/2006 Date de mise à jour :28/07/2007 17:38:56 Vu / téléchargé :10 882 / 1 492

Auteur : vduffaut

Ecrire un message privé
Commentaire sur cette source (20)
Ajouter un commentaire et/ou une note

 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

  • // 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
// 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...


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

03 juillet 2006 00:57:20 :
Changement simple de catégorie
20 février 2007 16:58:57 :
Correction bogue : REMARQUE : bogue détecté vers la ligne 290 : corriger : $this->nomZip = 'Sauvegarde '.date('Y-m-d H\hm\ms\s'); par : $this->nomZip = 'Sauvegarde '.date('Y-m-d H\hi\ms\s'); Ce n'est pas une erreur grave, mais c'est mieux sans erreur !
28 juillet 2007 17:38:56 :
Meilleurs commentaires et corrections de bogues mineurs suite à quelques remarques

 Sources de la même categorie

SUPPRESSION AUTOMATIQUE DES FICHIERS RAW ORPHELINS APRÈS UN ... par malokaff
UPLOADER DES FICHIER DANSUN DOSSIER, SÉCURISÉ AVEC MOT DE PA... par raizzo
COMPTEUR DE VISITES SUR FICHIER par pierreSabatier
FONCTION RECURSIVE DE DOSSIERS par tefa24600
Source avec Zip CONVERSION DES UNITÉS INFORMATIQUE (O, KIO, MIO, GIO, TIO...... par genetApt151

 Sources en rapport avec celle ci

Source avec Zip EXÉCUTER UN SCRIPT PHP EN TANT QUE SERVICE WINDOW par ig3
Source avec Zip Source avec une capture ZIP TO WEB (ZIP2WEB) par DevilTN
RÉ-INSTALLER UNE BASE DE DONNÉE SQLITE par armenak
Source avec Zip CLASS MYSQL/SQLITE + SAUVEGARDE DE BDD + COMPRESSION ZIP par Gueko
Source avec une capture SAUVEGARDE AUTOMATISÉE DE VOS BASES DE DONNÉES par malik7934

Commentaires et avis

Commentaire de kankrelune le 03/07/2006 23:32:39

Salut... j'ais pas regardé le code mais le principe est utile... par contre... .. .

$archive = new Zipper();  
if(!$archive->ZipperFichiers('Galeries'))
     echo 'ECHEC';

Aurait peut être été plus simple à l'utilisation... .. .

Voili voilou... je ne note pas n'ayant pas vu le code je jetterais un coup d'oeil quand j'aurais le temps... .. .

@ tchaOo°

Commentaire de GNVA Dfx le 04/07/2006 08:25:09

Franchement Bravo !

Sa me casse un peux quand je vois tous le boulot, sa me décourage. Non mais franchement quand on vois le niveau du gas ! On peut tous rentré à la maison.

Bravo !

Commentaire de stepibou le 04/07/2006 11:02:34

"j'ai honte... " non pourquoi?
c'est bien commenté...
Par contre : peut etre informer l'auteur de pclzip de ton code...
Pour le xhtml : b deviens strong ... please
a+
bon code

Commentaire de guill76 le 04/07/2006 22:54:26

Salut,
Génial la librairie,
par contre j'essaie depuis ce soir de zipper en utilisant les options prédéfinies, et j'arrive toujours pas à constituer une archive à extraire sans le path absolu.
Ce serait plutôt con si l'option du chemin relatif n'existait pas.En tout cas Je cherche toujours.

Commentaire de guill76 le 07/07/2006 21:11:59

Désolé : c'était une erreur de paramètres (ça marche très bien j'ai pas le chemin absolu) et pas un problème d'options : je vais me donner des baffes si ça continue.La prochaine fois je douterai de moi même avant de mettre en cause un possible bug. C'est une putain de déformation professionnelle.Je m'en veux terriblement(non terriblement là j'éxagère)  

Commentaire de FhX le 09/07/2006 17:15:05

"Pour le xhtml : b deviens strong ... please"
Totalement faux. C'est de l'hérésie que de dire un truc pareil :o

Pour preuve :
http://css.alsacreations.com/Tutoriels-et-articles-divers/strong-b-em-i-quelle-balise-utiliser-et-pourquoi

avec je cite :
L'argument est de dire que les balises <i> et <b> n'apportent aucun sens (sémantique) au document contrairement aux éléments <strong> et <em> qui sont des mises en exergue.
Or il faut bien comprendre qu'une mise en italique et une mise en gras n'implique pas forcément que le texte doit être plus important. Si c'est souvent le cas, il ne faut pas penser que les balises sont équivalentes.

Attention à ne pas dire n'importe quoi :)

Commentaire de guill76 le 09/07/2006 17:30:22

Aller,
Au bûcher Stepibou, l'ensorcelé accusé d'hérésie.:-)
  

Commentaire de stepibou le 09/07/2006 19:27:02

bon, d'ac!!

<span class="gras">blabla</span>

feuille de style :

.gras { font-weight: bold; }

Comme ca , tout le monde est content..

bon code php et html a vous!

Commentaire de FhX le 10/07/2006 12:54:18

Faire un span pour mettre en gras est aussi du grand n'importe quoi.
La balise span n'est pas fait pour avoir une classe de gras ou d'italique au cul :)

Pour mettre en gras :
<b>
<strong>

T'imagine si tu dois faire ca ?
<p>Salut <span class="gras">xxx</span>. Aujourd'hui, il est :<span class="gras">xxxhxxminxsec</span>. Tu as <span class="gras">xxxxxx nouveaux messages</span></p>.

Beurk :/
==>
<p>Salut <b>xxx</b>. Aujourd'hui, il est <b>xxxhxxminxsec</b>. Tu as <b>xxxxx nouveaux messages</b></p>

Pourquoi vouloir faire de la feuille de style à tout prix ? Si c'est juste pour mettre des parties en gras ?
Ici, je ne peux utiliser <strong></strong> car il n'y a rien à mettre à l'évidence ( schémantiquement parlant), donc j'utilise une balise <b> à la place. Tu peux utiliser span, mais tu y perds beaucoup pour pas grand chose !

Voila :)

Commentaire de vduffaut le 22/07/2006 12:53:31

Merci à tous de vos commentaires. Etant en déplacement pendant quelque temps je n'ai eu connaissances de ceux-ci qu'hier soir.

KANKRELUNE : j'aime bien mon écriture du test en une seule ligne mais je laisse libre chacun de choisir. Je voulais juste faire le plus concis possible.

GNVA : J'ai quelques années de programmation professionnelles derrière moi. En bossant on arrive toujours au but. Courage !

STEPIBOU : Honte parce je n'envoyais pas l'intérêt jusqu'à ce que le nombre de paramètres de cette classe me fasse penser que tout aurait été plus simple si j'avais commencé par écrire en mode objet plutôt que procédural. Mais je commence à perdre pied lorsqu'un objet utilise un sous-objet...
a->b->propriété. Pour les balises, voir ci-dessous avec le commentaire de FHX. Pour l'auteur de PCLLIB, tu as raison : je n'y avais pas songé et son source est tellement puissant qu'il mérite cette info.

FHX : AlsaCreations est effectivement de bon conseil (je vais souvent consulter les articles de ce site de référence) et je continuerai à utiliser <b>, <u> et <i> car la rapidité de saisie est incomparable et l'effet exactement celui désiré : modifier l'affichage (merci FHX pour cette indication).

Commentaire à tous : personne n'a noté ? Allez, un petit effort !

Commentaire de _klesk le 04/01/2007 22:00:55

Merci pour cette source que je cherchai depuis un moment.

Cepandant ne maitrisant pas le system de class, j'aimerai pouvoir forcer le telechargement au lien d'arriver sur ;

"Il est accessible en cliquant sur ce lien"

j'ai bien essayer avec

// entêtes HTTP
header('Content-Type: application/x-zip');
// force le téléchargement
header('Content-Disposition: inline; filename='.$this->arch'.zip');

mais forcement il me dit que les entete sont déja envoyer.

Merci de votre aide

Commentaire de vduffaut le 28/07/2007 17:53:08

Désolé de ne pas avoir répondu plus rapidement mais j'ai eu de gros soucis de santé... dont je commence à voir la fin.

Pour éviter ce message il suffit d'utiliser ob_start() avant l'appel et ob_clean() au sortir de l'appel : ensuite le code que vous indiquez devrait fonctionner

Cela dit j'espère que vous aviez résolu ce problème...

Commentaire de tiyo97 le 01/08/2007 15:03:18

Salut
Et moi qui cherchait un moyen de creer des zip à la volée...me voila servi lol
merci pour cette contrib

par contre, y'aurait-il un moyen de renommer les fichiers à archiver?

Commentaire de vduffaut le 01/08/2007 20:03:45

Le mieux est à mon sens d'utiliser les fonctions natives de PHP !

Sinon, une exploration de pclzip pourrait aussi convenir, mas à ce moment-là ma contribution perd de son intérêt -:)

Commentaire de tiyo97 le 02/08/2007 11:06:12

merci pour ta reponse
en fait j'ai renommé les fichiers avant de faire appel à ta contribution ^o^

Commentaire de ryu2005 le 04/11/2007 13:51:54

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

Commentaire de vduffaut le 04/11/2007 22:46:52

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 !

Commentaire de x31p24 le 27/04/2009 09:07:33

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 ?

Commentaire de julkien60 le 20/10/2009 16:24:42

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 ^^

Commentaire de tskip le 04/02/2010 11:48:46 8/10

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

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

archiver un dossier et ses sous dossiers (zip ou rar) [ par mictif ] bonjour, j'essaie de me documenter sur l'archivage de dossier en php mais je ne trouve rien de tres explissite pour mon petit niveau en php.... commen Zip automatique lors d'un Upload PHP [ par artkap ] Bonjour, je met en place une plateforme d'échange de fichiers pour une entreprise en interne qui permet l'upload de fichiers (sur cette base : [url=h Sauvegarde automatique de bdd [ par switsh ] Bonjour J'ai cr&#233;&#233; un site avec bdd dans lequel je rentre des informations. Le contenu du site est important et si jamais mon h&#233;bergeur Zip de dossier en php [ par isaac_nkubi ] Bonjour, J'aimerai savoir d&#233;j&#224; si c'est possible de mettre dans un zip un fichier entier et son contenu, si oui quelqu'un pourrait me dire Sauvagere complete [ par piep14 ] Bonjour, je souhaite faire une sauvegarde r&#233;guli&#232;re de mon site !!! J'ai essay&#233; en faisant : &lt;? echo "Sauvegarde des fichiers "; $l redirection automatique en fonction de la disponibilité d'un serveur [ par cfgservices ] Mon site existe sur 2 serveurs ( 1 principal + 1 de sauvegarde ).Je souhaiterais cr&#233;er une redirection automatique en fonction de la r&#233;ponse script inscription avec dossier creation automatique [ par pascal199 ] Bonjour, je suis Belge donc mon Francais à des fautes [^^happy10] Je recherche un script d'inscription, avec un e-mail qui serras envoyer au membres Probléme avec script de sauvegarde base de données [ par fabrice88 ] Bonjour, j'essai de mettre en place sur mon site internet un system de sauvegarde de ma base de données. J'ai donc suivi le script [url=http://www.php Exploration d'archives zip. [ par mohdaef ] Bonjour à tous, Je suis entrain de réaliser un upload de fichiers en PHP, et je souhaiterai dans le cas ou le fichier envoyé est une archive au forma envoie sauvegarder de ma base avec pièce jointe zip [ par jmsch57 ] bonjour, je suis débutant en programation et je viens réaliser un facturier. Afin de sauvegarder régulièrement ma base de donné j'utilise un scripte q


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,047 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales