Réponses:
Vous pouvez utiliser la ZipArchive
classe pour créer un fichier ZIP et le diffuser au client. Quelque chose comme:
$files = array('readme.txt', 'test.html', 'image.gif');
$zipname = 'file.zip';
$zip = new ZipArchive;
$zip->open($zipname, ZipArchive::CREATE);
foreach ($files as $file) {
$zip->addFile($file);
}
$zip->close();
et pour le diffuser:
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename='.$zipname);
header('Content-Length: ' . filesize($zipname));
readfile($zipname);
La deuxième ligne force le navigateur à présenter une boîte de téléchargement à l'utilisateur et lui demande le nom filename.zip. La troisième ligne est facultative mais certains navigateurs (principalement plus anciens) ont des problèmes dans certains cas sans que la taille du contenu ne soit spécifiée.
$zip = new ZipArchive;
place de $zip = new ZipFile;
?
Voici un exemple de travail de création de ZIP en PHP:
$zip = new ZipArchive();
$zip_name = time().".zip"; // Zip name
$zip->open($zip_name, ZipArchive::CREATE);
foreach ($files as $file) {
echo $path = "uploadpdf/".$file;
if(file_exists($path)){
$zip->addFromString(basename($path), file_get_contents($path));
}
else{
echo"file does not exist";
}
}
$zip->close();
Créez un fichier zip, puis téléchargez le fichier, en définissant l'en-tête, lisez le contenu du zip et sortez le fichier.
http://www.php.net/manual/en/function.ziparchive-addfile.php
Vous êtes prêt à utiliser php zip lib, et pouvez également utiliser zend zip lib,
<?PHP
// create object
$zip = new ZipArchive();
// open archive
if ($zip->open('app-0.09.zip') !== TRUE) {
die ("Could not open archive");
}
// get number of files in archive
$numFiles = $zip->numFiles;
// iterate over file list
// print details of each file
for ($x=0; $x<$numFiles; $x++) {
$file = $zip->statIndex($x);
printf("%s (%d bytes)", $file['name'], $file['size']);
print "
";
}
// close archive
$zip->close();
?>
http://devzone.zend.com/985/dynamically-creating-compressed-zip-archives-with-php/
et il y a aussi php pear lib pour cela http://www.php.net/manual/en/class.ziparchive.php