2016-02-18 1 views
1

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?

+1

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). –

+0

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. –

Répondre