Code : Tout sélectionner
<?php // On instancie la classe.
$zip = new ZipArchive();
if(is_dir('./'))
{
// On teste si le dossier existe, car sans ça le script risque de provoquer des erreurs.
if($zip->open('./Archive.zip', ZipArchive::CREATE) == TRUE)
{
// Ouverture de l’archive réussie.
// Récupération des fichiers.
$fichiers = scandir('./');
// On enlève . et .. qui représentent le dossier courant et le dossier parent.
unset($fichiers[0], $fichiers[1]);
foreach($fichiers as $f)
{
echo $f.'<br />';
// On ajoute chaque fichier à l’archive en spécifiant l’argument optionnel.
// Pour ne pas créer de dossier dans l’archive.
if(!$zip->addFile('./'.$f, $f))
{
echo 'Impossible d'ajouter "'.$f.'".<br/>';
}
else
{
echo 'Fichier '.$f.' ajouté<br />';
}
}
echo "Nombre de fichiers : " . $zip->numFiles . "\n<br />";
echo "Statut :" . $zip->status . "\n<br />";
echo "fichier :" . $zip->filename . "\n<br />";
// On ferme l’archive.
$zip->close();
}
else
{
// Erreur lors de l’ouverture.
// On peut ajouter du code ici pour gérer les différentes erreurs.
echo 'Erreur, impossible de créer l'archive.';
}
else
{
// Possibilité de créer le dossier avec mkdir().
echo 'Le dossier "upload/" n'existe pas.';
}
}
?>
<?php
$zip = new ZipArchive();
$oppened =$zip->open('Archive.zip', ZipArchive::CREATE);
if ($oppened === true) {
$dir = new DirectoryIterator('./');
foreach ($dir as $fileinfo) {
if (!$fileinfo->isDot() && !$fileinfo->isDir()) {
if (!$zip->addFile($fileinfo->getRealPath(), $fileinfo->getBasename())) {
echo 'Impossible d'ajouter "'.$fileinfo-> getRealPath().'".<br/>';
} else {
echo 'Fichier '.$fileinfo->getFilename().' ajouté<br />';
}
}
}
echo "Nombre de fichiers : " . $zip->numFiles . "\n<br />";
echo "Statut :" . $zip->getStatusString() . "\n<br />";
echo "fichier :" . $zip->filename . "\n<br />";
$zip->close();
} else {
echo 'Erreur, impossible de créer l'archive.<br/>';
echo 'code erreur : ', $oppened,'<br />';
}
@+Code : Tout sélectionner
<?php
if (!class_exists("ZipArchive"))
{
echo "Classe ZipArchive inexistante<br />";
exit;
}
else
{echo "Classe ZipArchive existante<br />";}
$zip = new ZipArchive();
$filename = "Archive.zip";
echo $filename."</br>";
$res = $zip->open($filename, ZipArchive::CREATE);
if ($res === TRUE) {
echo "le fichier ".$filename. " est ouvert\n<br />";
}
else{echo "le fichier ".$filename. " n'est pas ouvert\n<br />";}
$dir = opendir(".");
echo getcwd()."</br>";
while ($fichier = readdir($dir)) {
echo $fichier."</br>";
$zip->addFile($fichier);
}
closedir(".");
if (file_exists($filename)) {
echo "Archive.zip existe !!!<br />";}
else
{ echo "Archive.zip n'existe pas!!!<br />";
}
echo "Nombre de fichiers : " . $zip->numFiles . "\n";
echo "Statut :" . $zip->status . "\n";
$zip->close();
?>
<?php
/**
* parcourt d'un répertoire et de ses enfants pour les ajouter au zip
*/
function myRecursiveIterator($path, $zip)
{
$dir = new DirectoryIterator($path);
foreach ($dir as $fileinfo) {
if (!$fileinfo->isDot() && !$fileinfo->isDir()) {
// gaffe à la gestion du path il faut savoir où l'on se trouve dans l'archove et où l'on place le Fichier
// a priori si tu ajoutes en nom de fichier (2nd paramètre) un chemin relatif à la racine tu n'as pas de soucis en clair temp/fichier pour /www/tmp/fichier
if (!$zip->addFile($fileinfo->getRealPath(), $fileinfo->getBasename())) {
echo 'Impossible d'ajouter "'.$fileinfo-> getRealPath().'".<br/>';
} else {
echo 'Fichier '.$fileinfo->getFilename().' ajouté<br />';
}
} elseif ($fileinfo->isDir()) {
// à vérifier
$zip->addEmptyDir ($fileinfo->getBasename());
myRecursiveIterator($fileinfo->getRealPath(), $zip);
}
}
}
$zip = new ZipArchive();
$oppened =$zip->open('Archive.zip', ZipArchive::CREATE);
if ($oppened === true) {
myRecursiveIterator('./', $zip);
echo "Nombre de fichiers : " . $zip->numFiles . "\n<br />";
echo "Statut :" . $zip->getStatusString() . "\n<br />";
echo "fichier :" . $zip->filename . "\n<br />";
$zip->close();
} else {
echo 'Erreur, impossible de créer l'archive.<br/>';
echo 'code erreur : ', $oppened,'<br />';
}
<?php
$path = dirname(__FILE__);
$zip = new ZipArchive();
$oppened =$zip->open('Archive.zip', ZipArchive::CREATE);
if ($oppened === true) {
$Directory = new RecursiveDirectoryIterator($path);
$Iterator = new RecursiveIteratorIterator($Directory);
foreach ($Iterator as $fileinfo) {
if (!$fileinfo->isDot() && !$fileinfo->isDir()) {
// gaffe à la gestion du path il faut savoir où l'on se trouve dans l'archove et où l'on place le Fichier
// a priori si tu ajoutes en nom de fichier (2nd paramètre) un chemin relatif à la racine tu n'as pas de soucis en clair temp/fichier pour /www/tmp/fichier
$file = $fileinfo->getPathname() .'/'. $fileinfo->getBasename();
$zip->addFile($fileinfo->getRealPath(), $file) ;
} elseif ($fileinfo->isDir()) {
$zip->addEmptyDir($fileinfo->getBasename());
}
}
echo "Nombre de fichiers : " . $zip->numFiles . "\n<br />";
echo "Statut :" . $zip->getStatusString() . "\n<br />";
echo "fichier :" . $zip->filename . "\n<br />";
$zip->close();
} else {
echo 'Erreur, impossible de créer l'archive.<br/>';
echo 'code erreur : ', $oppened,'<br />';
}
Code : Tout sélectionner
<?php
/**
* parcourt d'un répertoire et de ses enfants pour les ajouter au zip
*/
function myRecursiveIterator($path, $zip)
{
$dir = new DirectoryIterator($path);
foreach ($dir as $fileinfo) {
if (!$fileinfo->isDot() && !$fileinfo->isDir()) {
// gaffe à la gestion du path il faut savoir où l'on se trouve dans l'archove et où l'on place le Fichier
// a priori si tu ajoutes en nom de fichier (2nd paramètre) un chemin relatif à la racine tu n'as pas de soucis en clair temp/fichier pour /www/tmp/fichier
if (!$zip->addFile($fileinfo->getRealPath(), $fileinfo->getBasename())) {
echo 'Impossible d'ajouter "'.$fileinfo-> getRealPath().'".<br/>';
} else {
echo 'Fichier '.$fileinfo->getFilename().' ajouté<br />';
}
} elseif ($fileinfo->isDir()) {
// à vérifier
$zip->addEmptyDir ($fileinfo->getBasename());
myRecursiveIterator($fileinfo->getRealPath(), $zip);
}
}
}
$zip = new ZipArchive();
$oppened =$zip->open('Archive.zip', ZipArchive::CREATE);
if ($oppened === true) {
myRecursiveIterator('./', $zip);
echo "Nombre de fichiers : " . $zip->numFiles . "\n<br />";
echo "Statut :" . $zip->getStatusString() . "\n<br />";
echo "fichier :" . $zip->filename . "\n<br />";
$zip->close();
} else {
echo 'Erreur, impossible de créer l'archive.<br/>';
echo 'code erreur : ', $oppened,'<br />';
}
<pre>
<?php
/**
* parcourt d'un répertoire et de ses enfants pour les ajouter au zip
*/
function myRecursiveIterator($path, $zip, $base = '')
{
echo 'Répertoire de départ : ',$path,'<br />';
$dir = new DirectoryIterator($path);
foreach ($dir as $fileinfo) {
// si c'est . ou .. on passe direct au suivant
if ($fileinfo->isDot()) {
continue;
}
if (!$fileinfo->isDir()) {
var_dump($fileinfo->getRealPath(), $fileinfo->getBasename());
if (!$zip->addFile($fileinfo->getRealPath(), $base .'/'. $fileinfo->getBasename())) {
echo 'Impossible d'ajouter "'.$fileinfo-> getRealPath().'".<br/>';
} else {
echo 'Fichier '.$fileinfo->getFilename().' ajouté<br />';
}
} else {
// à vérifier
echo 'répertoire : <br />';
$zip->addEmptyDir($fileinfo->getBasename());
$base .= $fileinfo->getBasename();
myRecursiveIterator($fileinfo->getRealPath(), $zip, $base);
}
}
}
$zip = new ZipArchive();
$oppened =$zip->open('Archive.zip', ZipArchive::CREATE);
if ($oppened === true) {
myRecursiveIterator('./', $zip);
echo "Nombre de fichiers : " . $zip->numFiles . "\n<br />";
echo "Statut :" . $zip->getStatusString() . "\n<br />";
echo "fichier :" . $zip->filename . "\n<br />";
$zip->close();
} else {
echo 'Erreur, impossible de créer l'archive.<br/>';
echo 'code erreur : ', $oppened,'<br />';
}
j'ia un problème pour insérer dans le bon répertoire.