2017-06-22 1 views
0

Je travaille sur une application web qui pose une série de questions et génère ensuite un document texte à partir de ces questions. Le document est créé et un téléchargement est automatiquement déclenché sur le navigateur des clients. Cela fonctionne parfaitement.Créer un fichier ZIP contenant le fichier généré à la volée

Cependant, ce que je voudrais faire maintenant est de créer un fichier ZIP à partir de ce fichier lorsqu'il est créé à la volée et ajouter des fichiers supplémentaires. Bien que je ne peux pas comprendre si c'est possible avec PHP?

Quelqu'un peut-il conseiller? J'ai regardé autour, mais tous les exemples/tutoriels démontrent la création de fichiers ZIP à partir de fichiers qui existent déjà dans le système de fichiers?

Merci.

+0

Jetez un oeil à https://stackoverflow.com/questions/1061710/php-zip-files-on-the-fly – Richard

+0

Votre gent, j'ai réussi à travailler à partir de ça et à le faire fonctionner comme je le voulais: – CrispyDuck

+0

Pour votre information, vous pouvez également le protéger avec un mot de passe: '$ zip-> setPassword (" YourPasswordHere ");' – Richard

Répondre

1

Donc, pour ceux qui sont intéressés, j'ai utilisé le code suivant à partir du SO mentionné ci-dessus poster:

// Prepare File 
$file = tempnam("tmp", "zip"); 
$zip = new ZipArchive(); 
$zip->open($file, ZipArchive::OVERWRITE); 

// Stuff with content 
$zip->addFromString('file_name_within_archive.ext', $your_string_data); 
$zip->addFile('file_on_server.ext', 'second_file_name_within_archive.ext'); 

// Close and send to users 
$zip->close(); 
header('Content-Type: application/zip'); 
header('Content-Length: ' . filesize($file)); 
header('Content-Disposition: attachment; filename="file.zip"'); 
readfile($file); 
unlink($file); 

ajusté en conséquence pour mes besoins et il fonctionne.