Creer un fichier zip a partir d'un dossier.
Fermé
anesr
Messages postés
22
Date d'inscription
mercredi 26 février 2014
Statut
Membre
Dernière intervention
10 novembre 2016
-
Modifié par anesr le 5/09/2016 à 11:30
arshi92 Messages postés 131 Date d'inscription mercredi 27 juin 2012 Statut Membre Dernière intervention 12 octobre 2017 - 8 sept. 2016 à 10:24
arshi92 Messages postés 131 Date d'inscription mercredi 27 juin 2012 Statut Membre Dernière intervention 12 octobre 2017 - 8 sept. 2016 à 10:24
A voir également:
- Creer un fichier zip a partir d'un dossier.
- Creer un groupe whatsapp a partir d'un autre groupe - Guide
- Créer un compte google - Guide
- Créer un compte gmail - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
1 réponse
arshi92
Messages postés
131
Date d'inscription
mercredi 27 juin 2012
Statut
Membre
Dernière intervention
12 octobre 2017
17
5 sept. 2016 à 14:21
5 sept. 2016 à 14:21
Bonjour.
J'ai un script mais qui nécessite deux fichiers.
1. zipper.function.php // Qui contient les fonctions
2. zipper.php // Qui zip le dossier
CONTENU DE ZIPPER.FUNCTION.PHP
Imaginons que le répertoire images soit dans le même répertoire que zipper.php.
CONTENU DE ZIPPER.PHP :
Voilà. J'espère avoir aidé. :-)
J'ai un script mais qui nécessite deux fichiers.
1. zipper.function.php // Qui contient les fonctions
2. zipper.php // Qui zip le dossier
CONTENU DE ZIPPER.FUNCTION.PHP
<?php function zipper_repertoire_recursif($nom_archive, $adr_dossier, $dossier_destination = '', $zip=null, $dossier_base = '') { if($zip===null) { // Si l'archive n'existe toujours pas (1er passage dans la fonction, on la crée) $zip = new ZipArchive(); if($zip->open($nom_archive, ZipArchive::CREATE) !== TRUE) { // La création de l'archive a échouée return false; } } if(substr($adr_dossier, -1)!='/') { // Si l'adresse du dossier ne se termine pas par '/', on le rajoute $adr_dossier .= '/'; } if($dossier_base=="") { // Si $dossier_base est vide ça veut dire que l'on rentre // dans la fonction pour la première fois. Donc on retient // le tout premier dossier (le dossier racine) dans $dossier_base $dossier_base=$adr_dossier; } if(file_exists($adr_dossier)) { if(@$dossier = opendir($adr_dossier)) { while(false !== ($fichier = readdir($dossier))) { if($fichier != '.' && $fichier != '..') { if(is_dir($adr_dossier.$fichier)) { $zip->addEmptyDir($adr_dossier.$fichier); zipper_repertoire_recursif($nom_archive, $adr_dossier.$fichier, $dossier_destination, $zip, $dossier_base); } else { $zip->addFile($adr_dossier.$fichier); } } } } } if($dossier_base==$adr_dossier) { // On ferme la zip $zip->close(); if($dossier_destination!='') { if(substr($dossier_destination, -1)!='/') { // Si l'adresse du dossier ne se termine pas par '/', on le rajoute $dossier_destination .= '/'; } // On déplace l'archive dans le dossier voulu if(rename($nom_archive, $dossier_destination.$nom_archive)) { return true; } else { return false; } } else { return true; } } } ?>
Imaginons que le répertoire images soit dans le même répertoire que zipper.php.
CONTENU DE ZIPPER.PHP :
<?php require_once("zipper.function.php"); if(zipper_repertoire_recursif('images.zip', 'images')) { // Si la fonction retourne true, c'est que ça a marché // Le deuxième paramètre '.' indique que l'on veut archiver le répertoire actuel, j'aurais // très bien pu mettre 'monrepertoire/sousrepertoire' à la place... echo "<h1 style='color:green;'>L'archive a bien été créée</h1>"; } else { echo "<h1 style='color:red;'>L'archive n'a pas été créée</h1>"; } ?>
Voilà. J'espère avoir aidé. :-)
7 sept. 2016 à 13:58
Ça se présente comme ça
exec ( "cd $absolute_results_dir; zip -rj image ./images/*");
et ça à l'air de bien fonctionner.
:)
8 sept. 2016 à 10:24
Bonne journée. :-)