Benvenuta/o
Logout




Vai ai contenuti
Crea un File zip (Cartelle)
Utility
/** * Aggiunge una cartella e le sue sottocartelle e i file contenuti a un archivio * se l'archivio non esiste, lo crea */ //creazione dell'oggetto di classe $zip = new ZipArchive(); //cartella generale $dir = "zip/"; $name = "Scheda_Immobile.zip"; //nome dell'archivio $filename = $dir.$name; //indirizzo completo dell'archivio echo '$filename.$dir.$name'; $zip->open($filename, ZipArchive::CREATE); $dir_name = '2'; //nome della cartella da zippare $dir_path = $dir.$dir_name; //indirizzo completo della cartella da zippare if(!is_dir($dir_path)){ throw new Exception('La cartella ' . $dir.$dir_path . ' non esiste'); } //aggiunge lo slash finale (o corrispettivo) se non presente nel nome cartella if(substr($dir_path, -1) != DIRECTORY_SEPARATOR){ $dir_path.= DIRECTORY_SEPARATOR; } $dirStack = array($dir_path); //trova l'indice da cui inizia l'ultima cartella $cutFrom = strrpos(substr($dir_path, 0, -1), '/')+1; while(!empty($dirStack)){ $currentDir = array_pop($dirStack); $filesToAdd = array(); $dir_folder = dir($currentDir); while( false !== ($node = $dir_folder->read()) ){ if( ($node == '..') || ($node == '.') ){ continue; } if(is_dir($currentDir . $node)){ array_push($dirStack, $currentDir . $node . '/'); } if(is_file($currentDir . $node)){ $filesToAdd[] = $node; } } $localDir = substr($currentDir, $cutFrom); $zip->addEmptyDir($localDir); foreach($filesToAdd as $file){ $zip->addFile($currentDir . $file, $localDir . $file); } } $zip->close();
Torna ai contenuti