Bonjour tout le monde,
J'ai un petit problème avec le module zip de php5.
En fait, ce que j'essaye de faire se rapproche de la génération d'images (entre autre) : un script de génération d'image peut soit créer l'image quelque part sur le disque dur, soit se faire passer pour l'image en surchargeant le header.
C'est la même chose que je souhaite faire avec mon script de zip : me faire passer pour un fichier zip sans l'écrire sur le disque dur.
Donc à la fin de mon script, je vais modifier le header pour me faire passer pour le zip, de la façon suivante :
header('Pragma: public');
header('Content-type: application/zip');
header('Content-length: ' . $taille_du_zip);
header('Content-Disposition: attachment; filename="'.$nom_du_zip.'"');
Le hic, c'est que j'ai du mal à combiner ça avec le module zip de php5.
Suis-je obligé d'écrire le fichier sur le disque dur ?
J'essaye de partir de l'exemple de php.net de création d'un zip (cf plus bas). Sauf que dans cet exemple, il y a dès le début la création du zip sur le disque dur avant remplissage et c'est ce que j'essaye d'éviter.
L'exemple en question (tiré de php.net) :
<?php
$zip = new ZipArchive();
$filename = "./test112.zip";
if ($zip->open($filename, ZIPARCHIVE::CREATE)!==TRUE) {
exit("cannot open <$filename>\n");
}
$zip->addFromString("testfilephp.txt" . time(), "#1 Ceci est un test, ajouté en tant que fichier testfilephp.txt.\n");
$zip->addFromString("testfilephp2.txt" . time(), "#2 Ceci est un test, ajouté en tant que fichier testfilephp2.txt.\n");
$zip->addFile($thisdir . "/too.php","/testfromfile.php");
echo "numfiles: " . $zip->numFiles . "\n";
echo "status:" . $zip->status . "\n";
$zip->close();
?>