Creer un fichier zip a partir d'un dossier.
anesr
Messages postés
22
Date d'inscription
Statut
Membre
Dernière intervention
-
arshi92 Messages postés 131 Date d'inscription Statut Membre Dernière intervention -
arshi92 Messages postés 131 Date d'inscription Statut Membre Dernière intervention -
Bonjour la communauté informatique,
Je sollicite votre aide afin de m'aider à avancer dans mes travaux car je fais actuellement face à une difficulté.
En effet je souhaiterai ajouter un peu de code dans mon script PHP afin de créer une archive .zip a partir d'un répertoire présent à un endroit bien précis sur mon réseau.
Le dossier en question se nomme "images", il contient plusieurs images bien évidemment.
Cependant je ne maitrise pas beaucoup le PHP et j'ai beaucoup de mal à avancer dans mon travail.
Pourriez vous m'apporter votre soutient s'il vous plait.
Voici mon code et le bloc que j'ai ajouter pour créer l'archive zip.
----------------------------------------------------------------------------------------------------------------------------------
<?php
// function for create images
function createImages($absolute_results_dir, $image_check) {
set_default_values();
//list all gmt files
$gmt_files = m_find_in_dir($absolute_results_dir, ".*\.gmt$");
foreach($gmt_files as $a_gmt_file){
//foreach gmt file create images
createImagesForGMTFile($absolute_results_dir, $a_gmt_file, $image_check);
}
//clean result dir
exec ("mkdir -p $absolute_results_dir/images");
exec ( "mv $absolute_results_dir/*.jpg $absolute_results_dir/images");
exec ( "mv $absolute_results_dir/*.ps $absolute_results_dir/images");
exec ( "mv $absolute_results_dir/*.xyz $absolute_results_dir/alog");
exec ( "mv $absolute_results_dir/tmptext $absolute_results_dir/alog");
exec ( "mv $absolute_results_dir/triangle.txt $absolute_results_dir/alog");
// TEST CREATION DOSSIER ZIP
$zip = new ZipArchive();
// On ouvre l’archive.
if($zip->open('Zip.zip') == TRUE)
// On crée l’archive.
if($zip->open('Zip.zip', ZipArchive::CREATE) == TRUE)
{
echo '"Zip.zip" ouvert';
$zip->close();
}
else
{
echo 'Impossible d'ouvrir "Zip.zip"';
// Traitement des erreurs avec un switch(), par exemple.
}
}
// FIN TEST CREATION DOSSIER ZIP
Je sollicite votre aide afin de m'aider à avancer dans mes travaux car je fais actuellement face à une difficulté.
En effet je souhaiterai ajouter un peu de code dans mon script PHP afin de créer une archive .zip a partir d'un répertoire présent à un endroit bien précis sur mon réseau.
Le dossier en question se nomme "images", il contient plusieurs images bien évidemment.
Cependant je ne maitrise pas beaucoup le PHP et j'ai beaucoup de mal à avancer dans mon travail.
Pourriez vous m'apporter votre soutient s'il vous plait.
Voici mon code et le bloc que j'ai ajouter pour créer l'archive zip.
----------------------------------------------------------------------------------------------------------------------------------
<?php
// function for create images
function createImages($absolute_results_dir, $image_check) {
set_default_values();
//list all gmt files
$gmt_files = m_find_in_dir($absolute_results_dir, ".*\.gmt$");
foreach($gmt_files as $a_gmt_file){
//foreach gmt file create images
createImagesForGMTFile($absolute_results_dir, $a_gmt_file, $image_check);
}
//clean result dir
exec ("mkdir -p $absolute_results_dir/images");
exec ( "mv $absolute_results_dir/*.jpg $absolute_results_dir/images");
exec ( "mv $absolute_results_dir/*.ps $absolute_results_dir/images");
exec ( "mv $absolute_results_dir/*.xyz $absolute_results_dir/alog");
exec ( "mv $absolute_results_dir/tmptext $absolute_results_dir/alog");
exec ( "mv $absolute_results_dir/triangle.txt $absolute_results_dir/alog");
// TEST CREATION DOSSIER ZIP
$zip = new ZipArchive();
// On ouvre l’archive.
if($zip->open('Zip.zip') == TRUE)
// On crée l’archive.
if($zip->open('Zip.zip', ZipArchive::CREATE) == TRUE)
{
echo '"Zip.zip" ouvert';
$zip->close();
}
else
{
echo 'Impossible d'ouvrir "Zip.zip"';
// Traitement des erreurs avec un switch(), par exemple.
}
}
// FIN TEST CREATION DOSSIER ZIP
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
- Creer un fichier .bat - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
1 réponse
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é. :-)
Ça se présente comme ça
exec ( "cd $absolute_results_dir; zip -rj image ./images/*");
et ça à l'air de bien fonctionner.
:)
Bonne journée. :-)