2013-03-14 4 views
0

Я ищу решение для zip содержимого папки, включая все подпапки, которые находятся в папке, , но не сама основная папка.zip содержимое папки php, а не целая папка

Я начал с этой функцией, которая добавляет целую папку в архив почтового индекса

function addFolderToZip($dir, $zipArchive){ 
    if (is_dir($dir)) { 
     if ($dh = opendir($dir)) { 

      //Add the directory 
      $zipArchive->addEmptyDir($dir); 

      // Loop through all the files 
      while (($file = readdir($dh)) !== false) { 

       //If it's a folder, run the function again! 
       if(!is_file($dir . $file)){ 
        // Skip parent and root directories 
        if(($file !== ".") && ($file !== "..")){ 
         addFolderToZip($dir . $file . "/", $zipArchive); 
        } 

       }else{ 
        // Add the files 
        $zipArchive->addFile($dir . $file); 

       } 
      } 
     } 
    } 
} 

, но я не вижу, как изменить функцию (возможно, используя третий аргумент?)

$z = new ZipArchive(); 
$z->open("zips/new.zip", ZIPARCHIVE::CREATE); 
addFolderToZip("unzipped/",$z); 
$z->close(); 

ответ

1

Я получил его, я создал аргумент $ LocalPath, установите «»:

function add_folder_in_path($folder_path,$local_path,$z) 
{ 
    $dh=opendir($folder_path); 
    while (($file = readdir($dh)) !== false) 
    { 
     if(($file !== ".") && ($file !== "..")) 
     { 
     if (is_file($folder_path.$file)) 
      { 

        $z->addFile($folder_path.$file,$local_path.$file); 
      } 
     else 
      { 
       add_folder_in_path($folder_path.$file."/",$local_path.$file."/",$z); 
      } 
     } 


    } 
} 

Вот как я называю я т

$z = new ZipArchive(); 
$z->open("zipped/new.zip", ZIPARCHIVE::CREATE); 
echo "<br>"; 
add_folder_in_path("myzips/","",$z); 
$z->close();  

 Смежные вопросы

  • Нет связанных вопросов^_^