1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| <?php // On instancie la classe.
$zip = new ZipArchive();
$path = "agrements/";
$path.= $_POST['annee'];
if(is_dir($path))
{
// 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 larchive réussie.
// Récupération des fichiers.
$fichiers = scandir($path);
// On enlève . et .. qui représentent le dossier courant et le dossier parent.
unset($fichiers[0], $fichiers[1]);
foreach($fichiers as $f)
{
// On ajoute chaque fichier à larchive en spécifiant largument optionnel.
// Pour ne pas créer de dossier dans larchive.
if(!$zip->addFile($path.$f, $f))
{
echo 'Impossible d'ajouter "'.$f.'".<br/>';
}
}
// On ferme larchive.
$zip->close();
// On peut ensuite, comme dans le tuto de DHKold, proposer le téléchargement.
header('Content-Transfer-Encoding: binary'); //Transfert en binaire (fichier).
header('Content-Disposition: attachment; filename="Archive.zip"'); //Nom du fichier.
header('Content-Length: '.filesize('Archive.zip')); //Taille du fichier.
readfile('Archive.zip');
}
else
{
// Erreur lors de louverture.
// On peut ajouter du code ici pour gérer les différentes erreurs.
echo 'Erreur, impossible de créer archive.';
}
}
else
{
// Possibilité de créer le dossier avec mkdir().
echo 'Le dossier n\'existe pas.';
}
?> |
Partager