You should use the ZipArchive class to make a ZIP file and stream it to the client. Something like follows:
Quote:
PHP function to download multiple files in a zip archive
//function to zip and force download the files using PHP
function zipFilesAndDownload($file_names,$archive_file_name ,$file_path)
{
* //create the object
* $zip = new ZipArchive();
* //create the file and throw the error if unsuccessful
* if ($zip->open($archive_file_name, ZIPARCHIVE::CREATE )!==TRUE) {
* * exit("cannot open <$archive_file_name>\n");
* }
* //add each files of $file_name array to archive
* foreach($file_names as $files)
* {
* * $zip->addFile($file_path.$files,$files);
* }
* $zip->close();
* //then send the headers to foce download the zip file
* header("Content-type: application/zip");
* header("Content-Disposition: attachment; filename=$archive_file_name");
* header("Pragma: no-cache");
* header("Expires: 0");
* readfile("$archive_file_name");
* exit;
}
|
In the above PHP function (object of ZipArchive class). Note that this library is packaged in PHP after the version of PHP 5.2. If you are using the older PHP version, then you have to get it from PECL extension.
Example of Using Above PHP function
Quote:
*$file_names=array('test.php','test1.txt');
* $archive_file_name='zipped.zip';
* $file_path=dirname(__FILE__).'/';
* zipFilesAndDownload($file_names,$archive_file_name ,$file_path);
|
After calling above function you will get the zip archive containing multiple files passed as array in the first parameter of the function.