Section: Générer un fichier zip
« Renvoyer un fichier binaire | ^ Générer du contenu avec les vues | Générer un sitemap » |
Jelix propose jResponseZip
qui permet de générer un fichier zip à la
volée, et le proposer en téléchargement à l'utilisateur. L'alias est "zip" :
$rep = $this->getResponse('zip');
Vous devez ensuite indiquer un nom de fichier. C'est sous ce nom que le contenu zip sera proposé à l'utilisateur. Ce nom de fichier n'est pas forcément celui d'un fichier existant sur le serveur.
$rep->zipFilename = 'myCrazyPackage.zip';
Ensuite, il faut créer le zip. La propriété $content
est un objet jZipCreator
,
dont vous utiliserez les méthodes pour ajouter du contenu dans le zip.
Voyez la documentation de référence jZipCreator.
// ajoute le contenu du fichier datas/truc.txt stocké sur le serveur,
// et le réference dans le zip sous le nom machin.txt
$rep->content->addFile(JELIX_VAR_PATH.'datas/truc.txt', 'machin.txt');
// ajoute tout le contenu d'un répertoire "exemples" stocké sur le serveur
$rep->content->addDir(JELIX_VAR_PATH.'exemples/', 'exemples', true);
// créer un fichier dans le zip, avec le nom et le contenu donné
$rep->content->addContentFile('dynamic.txt', 'contenu généré comme on veut');
Et c'est tout :-)
L'utilisateur se verra proposer d'enregistrer sur son disque un fichier
myCrazyPackage.zip
, qui contiendra un fichier machin.txt
, un
répertoire exemples/
, et un fichier dynamic.txt
.