Как запаковать в архив папку с файлами и сохранением структуры?

Тема в разделе "PHP", создана пользователем gavik, 3 июл 2015.

Модераторы: latteo
  1. gavik

    gavik

    Регистр.:
    25 июл 2010
    Сообщения:
    160
    Симпатии:
    14
    Подскажите, как доработать функцию, чтобы можно было с ее помощью запапковать папку в которой есть файлы, папки с несколькими уровнями вложенности?

    PHP:
    $destination=tempnam("tmp""zip");
    $zipArchive = new ZipArchive();
    $zipArchive->open($destinationZIPARCHIVE::CREATE); //пытаемся создать архив
          
    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);
                     
                    }
                }
            }
        }
    }
     
  2. wwwxakep

    wwwxakep Создатель

    Регистр.:
    4 фев 2007
    Сообщения:
    31
    Симпатии:
    8
    PHP:
    function addDir($dir$zipArchive) {
        
    $zipArchive->addEmptyDir($path);
        
    $nodes glob($dir '/*');

        foreach (
    $nodes as $node) {
            if (
    is_dir($node)) {
                
    $zipArchive->addDir($node);
            } else if (
    is_file($node))  {
                
    $zipArchive->addFile($node);
            }
        }
     
  3. emelkay

    emelkay Писатель

    Регистр.:
    12 июл 2015
    Сообщения:
    4
    Симпатии:
    0
    попробуй через парсер
     
  4. comdev

    comdev Писатель

    Заблокирован
    Регистр.:
    31 янв 2014
    Сообщения:
    4
    Симпатии:
    1
    так у тебя вроде бы сейчас и так работает рекурсивный вызов функции, подход вроде бы верный