Créer un fichier zip en utilisant PHP classe ZipArchive sans l'écriture du fichier sur le disque?
Je voudrais créer un fichier zip dans la mémoire à l'aide d'un ZipArchive (ou un natif de la classe PHP) et de lire le contenu du fichier vers le client. Est-ce possible? Si oui, comment?
Les fichiers que je veux zip dans cette application sont d'un maximum de 15 MO au total. Je pense que nous devrions être dans la bonne mémoire de forme-sage.
- Dupliquer: stackoverflow.com/questions/1061710/php-zip-files-on-the-fly
- et comment allez-vous gérer les archives zip qui dépasse la quantité de mémoire disponible pour PHP?
- s'il vous plaît laissez cette question restent ouverts, stackoverflow.com/questions/1061710/php-zip-files-on-the-fly on a demandé à un de manière à pouvoir recevoir des réponses utiles.
- désolé, votre commentaire a me confond. Veuillez expliquer.
- désolé à ce sujet. Les autres question et réponses sauter sur la partie où le fichier zip est ouvert en écriture (php.net/manual/en/function.ziparchive-open.php), qui est le nœud du problème dans son ensemble. Si ce est pas traitée, le problème ne peut être résolu.
Vous devez vous connecter pour publier un commentaire.
Prendre un coup d'oeil à la bibliothèque suivante, il permet de créer des fichiers zip et renvoyer sous la forme d'un flux: PHPClasses.org.
Essayer ZipStream (lien vers le dépôt GitHub, prend également en charge l'installation via Compositeur).
À partir de l'original site web de l'auteur (mort):
$zip = new \ZipStream\ZipStream('bulk-export.zip'); $zip->addFile('users.csv', '(csv data generated by another method here)'); $zip->finish();
Il y a un autre thread parlant à ce sujet:
Manipuler les Archives de la mémoire avec PHP (sans la création d'un fichier temporaire sur le disque)
l'ortie a suggéré d'utiliser zip.lib.php de phpmyadmin. Je pense que c'est plutôt une solution solide.
FYI zip.lib.php n'existe plus, il a été remplacer par ZipFile.php dans les mêmes bibliothèques/dossier.