CrispyDuck
CrispyDuck

Reputation: 431

Create a ZIP file containing file generated on the fly

I am working on a web app that asks a series of questions and then generates a text document from those questions. The document is created and a download is automatically triggered on the clients browser.That works perfectly.

However, what I would like to do now is create a ZIP file from this file when it is created on the fly and add some additional files also. Though I cannot figure out if this is possible with PHP?

Can anyone advise? I have looked around, but all examples/tutorials demonstrate creating ZIP files from files that already exist in the file system?

Thanks.

Upvotes: 0

Views: 1250

Answers (1)

CrispyDuck
CrispyDuck

Reputation: 431

So for those who are interested, I used the following code from the mentioned SO post above:

// 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); 

Adjusted accordingly for my requirements and it works.

Upvotes: 1

Related Questions