Il y a un moment déjà j’ai été confronté à ce problème et j’avais galéré pour trouver une solution (ZIP étant un format propriétaire).
Hors la solution existe bel et bien, il s’agit d’utiliser gzip qui est un format de compression non breveté qui s’apparente à zip. Il est du coup possible de créer un fichier zip libre de droit.
Voici donc le code à utiliser trouvé sur développez.com et utilisant la librairie zip.lib.php utilisée dans PhpMyAdmin
[php]
// appel de la classe
require_once(’zip.lib.php’);
// nom du fichier à ajouter dans l’archive
$filename = ‘test.txt’;
// contenu du fichier
$fp = fopen ($filename, ‘r’);
$content = fread($fp, filesize($filename));
fclose ($fp);
// création d’un objet ‘zipfile’
$zip = new zipfile();
// ajout du fichier dans cet objet
$zip->addfile($content, $filename);
// production de l’archive’ Zip
$archive = $zip->file();
// entêtes HTTP
header(’Content-Type: application/x-zip’);
// force le téléchargement
header(’Content-Disposition: inline; filename=archive.zip’);
// envoi du fichier au navigateur
echo $archive;
[/php]


Toujours pas de billet a propos de la sortie officielle de de PandaRouge 1.5 ? une honte je vous dit….
On dit “je dis” et pas “je dit”, on n’est pas sur un skyblog ici !!!
Sinon à propos de PandaRoux, ça ne sert plus à rien d’en parler tout mon entourage l’utilise et les stats de ce blog parlent pour moi :
Firefox 70.80%
Internet Explorer 20.35%
Safari 6.19%
slyblog / skyblog
tout cela se ressemble tellement
Mouep c’est d’un goût douteux ce jeu de mots !
ok plus de jeu de mots alors !
Je ne dis pas qu’il est parfois interessant de fabriquer un fichier zip, mais il ne faut pas oublier qu’Apache permet de faire des zip à la volé si le navigateur le supporte. Je ne suis pas rentré dans le détail des paramètres, mais en fonction du but à atteindre, il faut garder cette possibilité en tête.
salut a tous,
comment faire pour enregistrer le fichier zip crée sur le repertoire courant de l’application sur le serveur? car votre solution permet le renvoi du fichier zip crée au navigateur seulement!
cordialement,
Je pense qu’il faudrait faire un truc dans le genre :
file_put_contents ( $fileName, $archive);
juste après avoir fait
$archive = $zip->file();
$fileName étant bien évidemment une variable qui contient le chemin et le nom du fichier à écrire. Lequel fichier étant bien évidemment accessible en écriture pour PHP.
Pour plus d’info :
http://fr.php.net/manual/fr/function.file-put-contents.php