La classe PHP ZipArchive me permettra de créer une archive zip avec la méthode open():Comment créer et télécharger une archive zip en PHP sans un fichier côté serveur intermédiaire
mixed ZipArchive::open (string $filename [, int $flags ])
Je peux alors ajouter des fichiers à cette archive, fermez le fichier et le télécharger dans le navigateur Web de l'utilisateur comme d'habitude:
header ('Content-Type: application/zip');
header ('Content-Length: ' . filesize ($filename));
header ('Content-Disposition: attachment; filename="' . $filename . '"');
readfile ($filename);
unlink ($filename);
Ma question: est-il un moyen d'éviter de créer un fichier sur le disque dur du serveur, le téléchargement que puis l'effacer ? C'est à dire. Est-il possible d'utiliser stdout comme nom de fichier cible passé à la méthode open() et écrire directement le contenu de l'archive dans stdout? Quelque chose du genre:
ZipArchive::open (STDOUT, ZipArchive::CREATE)
Ou suis-je bloqué avec la nécessité d'un fichier côté serveur intermédiaire?
Je me demandais simplement pourquoi vous êtes opposé à l'idée d'un fichier côté serveur? Même si cette méthode à la volée est possible, ce serait soit via des fichiers temporaires en arrière-plan (ce qui vous ramène à la case départ) ou en utilisant la RAM du serveur (qui peut être un type d'enfer séparé, selon l'utilisation du serveur et la taille/quantité des fichiers). –
Je cours dans un environnement avec un espace disque sévère et des restrictions d'accès en écriture. Cependant, votre point sur l'utilisation de la RAM du serveur est bien pris. –