Comment puis-je télécharger plusieurs fichiers sous forme de fichier zip en utilisant php ?
Réponses
Trop de publicités?Vous pouvez utiliser le ZipArchive
pour créer un fichier ZIP et le transmettre 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 de 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 nom de fichier.zip. La troisième ligne est facultative mais certains navigateurs (principalement les plus anciens) ont des problèmes dans certains cas sans que la taille du contenu soit spécifiée.
Voici un exemple concret 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éer un fichier zip, puis télécharger le fichier, en définissant l'en-tête, lire le contenu du zip et sortir le fichier.
http://www.php.net/manual/en/function.ziparchive-addfile.php
Vous pouvez utiliser la librairie xip.lib.php Class. zip.lib.php Par exemple, consultez cette page article
Vous êtes prêt à faire avec php zip lib, et vous pouvez aussi utiliser la librairie zend zip,
<?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 la librairie php pear pour cela http://www.php.net/manual/en/class.ziparchive.php
- Réponses précédentes
- Plus de réponses