Ajouter des fichiers
On dispose donc d’une archive avec le code de la partie précédente et à laquelle on va ajouter des fichiers. Commençons avec de simples fichiers texte (
*.txt).
Il existe deux méthodes pour cela :
- addFile, pour ajouter un fichier existant ;
- addFromString, pour écrire directement le contenu.
Ces deux méthodes sont donc
<?php $zip->addFile(); ?> et
<?php $zip->addFromString(); ?> (elles écrasent le contenu si le fichier existe déjà), elles renvoient toutes les deux un booléen.
Notez que
<?php $zip->addFile(); ?> possède un paramètre facultatif qui permet de changer le nom du fichier dans l’archive.
Code : PHP - Prototype de la méthode | bool ZipArchive::addFile ( string $filename [, string $localname ] )
|
Le contenu du fichier
.txt sera très simple.
Code : Autre - Fichier.txt1
| Je suis le contenu de Fichier.txt ! |
Code : PHP 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 | <?php
$zip = new ZipArchive();
if($zip->open('Zip.zip', ZipArchive::CREATE) === true)
{
echo '"Zip.zip" ouvert<br/>';
// Ajout d’un fichier.
$zip->addFile('Fichier.txt');
// Ajout direct.
$zip->addFromString('Fichier.txt', 'Je suis le contenu de Fichier.txt !');
// Et on referme l'archive.
$zip->close();
}
else
{
echo 'Impossible d'ouvrir "Zip.zip<br/>';
// Traitement des erreurs avec un switch(), par exemple.
}
|
L’ajout de fichier est donc très simple : pour de simples fichiers contenant du texte on passe par
<?php $zip->addFromString(); ?> et pour ce qui est des images, des documents Word, XML, etc., on passe par
<?php $zip->addFile(); ?>.
Si on veut organiser son archive, on peut y créer des dossiers, soit en passant par
<?php $zip->addEmptyDir('Le nom du dossier'); ?>, soit en précisant directement un nom de dossier lors de l’ajout du fichier.
Code : PHP 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 | <?php $zip = new ZipArchive();
if($zip->open('Zip.zip', ZipArchive::CREATE) === true)
{
echo '"Zip.zip" ouvert<br/>';
// Création d'un dossier par addEmptyDir(). [Facultatif]
$zip->addEmptyDir('Fichiers textes');
// Ajout d'un fichier.
$zip->addFile('Fichiers textes/Fichier.txt');
// Ajout directement.
$zip->addFromString('Fichiers textes/Fichier.txt', 'Je suis le contenu de Fichier.txt !');
// Et on referme l’archive.
$zip->close();
}
else
{
echo 'Impossible d'ouvrir "Zip.zip<br/>';
// Traitement des erreurs avec un switch(), par exemple.
}
|
Renommer et supprimer
Pour renommer et supprimer des fichiers, on dispose de deux méthodes. On peut soit passer le nom du fichier, soit passer son numéro d'index (récupérable par
<?php $zip->locateName('nom du fichier'); ?>). Elles renvoient toutes deux un booléen indiquant le succès de l’opération.
Code : PHP | <?php // Suppression en passant par l’index.
$zip->deleteIndex(3);
// Suppression en passant par le nom du fichier.
$zip->deleteName('Nom du fichier.extension');
// Renommer en passant par l’index.
$zip->renameIndex(3, 'Nouveau nom.extension');
// Renommer en passant par le nom.
$zip->renameName('Fichier.extension', 'Nouveau Nom.extension'); ?>
|
Extraire les fichiers
Il est possible d’extraire le contenu de l’archive (seulement une/plusieurs entrée(s) ou même l’archive complète) grâce à la méthode
<?php $zip->extractTo(); ?>.
Code : PHP | <?php // Extraction unique dans le dossier courant.
$zip->extractTo('.', 'Fichier.txt');
// Extractions multiples dans le dossier courant.
$zip->extractTo('.', array('Fichier.txt', 'Autre fichier.txt')); ?>
|