Le répertoire est quelque chose comme :
home/
file1.html
file2.html
Another_Dir/
file8.html
Sub_Dir/
file19.html
J'utilise la même classe PHP Zip que celle utilisée dans PHPMyAdmin. http://trac.seagullproject.org/browser/branches/0.6-bugfix/lib/other/Zip.php . Je ne suis pas sûr de savoir comment zipper un répertoire plutôt qu'un simple fichier. Voici ce que j'ai jusqu'à présent :
$aFiles = $this->da->getDirTree($target);
/* $aFiles is something like, path => filetime
Array
(
[home] =>
[home/file1.html] => 1251280379
[home/file2.html] => 1251280377
etc...
)
*/
$zip = & new Zip();
foreach( $aFiles as $fileLocation => $time ){
$file = $target . "/" . $fileLocation;
if ( is_file($file) ){
$buffer = file_get_contents($file);
$zip->addFile($buffer, $fileLocation);
}
}
THEN_SOME_PHP_CLASS::toDownloadData($zip); // this bit works ok
mais lorsque j'essaie de décompresser le fichier zip téléchargé correspondant, j'obtiens "opération non autorisée".
Cette erreur se produit uniquement lorsque j'essaie de décompresser le fichier sur mon Mac. Lorsque je décompose le fichier en ligne de commande, le fichier se décompose correctement. Dois-je envoyer un type de contenu spécifique lors du téléchargement, actuellement 'application/zip' ?
0 votes
Ce code fonctionne réellement - mais pour une raison quelconque, vous ne pouvez pas le décompresser sous Mac OS (à moins d'utiliser CLI unzip). Le fichier Zip se décompose correctement sur PC.
0 votes
Ceci peut vous aider codingbin.com/compressing-a-directory-of-files-with-php