zipArchive как сохранить папку в папке

230
03 июля 2017, 19:41

Ошибка Warning: ZipArchive::close(): Read error: Is a directory in /путь до скрипта/public_html/crm/drive/drive.php on line 102 Проблема такая пишу скрипт который должен архивировать папки и файлы внутри, но не могу понять, как сделать если внутри одной папке есть ещё одна папка. Объясню на примере, так работает норм

папка + файл1 файл2 и т.д (так работает)

но так работать не хочет

папка+ файл1 ПАПКА (так не работает)

вопрос как сделать так что бы если скрипт видел папку то тоже скачивал и если снова видел внутри той папке еще папку то тоже скачивал и файлы в папках соответственно ? вот мой скрипт

<form name='pathZip' method='post'> 
  <a href='#'> 
    <div class='folder'><img src='img/folder.png'><span class='text-folder'>folder2</span></div> 
  </a> 
  <input type='checkbox' name='pathUpload[]' ' value=folder2 /> 
<input type='submit ' name='createPath ' value='Download as ZIP ' /> 
    <input type='reset ' name='reset '  value='Reset ' /> 
    </form>

И сам обработчик

if (isset($_POST['createPath'])) {//проверям что кнопка нажата 
      
$zip = new ZipArchive(); // содаём архив 
$zip_name = time().".zip"; // имя файла 
if ($zip->open($zip_name, ZipArchive::CREATE) !== true) { // открываем файл 
  die ("Could not open archive");//если файл не открывается 
} 
$var = $_POST["pathUpload"];// массв переменных что переданы через форму 
foreach ($var as $key_var) {//  обраатываем массив 
$iterator = new RecursiveDirectoryIterator($key_var);//происходит рекурсионый перебор каталогов файловой системы 
foreach ($iterator as $key => $value) {// обрабатываем массив файлами 
  $path = pathinfo($value);//проверяем путь или возврощаем путь к файлу 
 
  if ($path['basename'] == '.' || $path['basename'] == '..') continue;//проверям те файлы что скачаем если в файлах присутствуют точки то скачиваем 
 
  $zip->addFile(realpath($key), $key);//добавляем файл на сервер 
 
 
  
} 
 
$zip->close();//закрываем архив 
    if (file_exists($zip_name)) { 
        // отдаём файл на скачивание 
        header('Content-type: application/zip', 'charset=utf-8'); 
        header('Content-Disposition: attachment; filename="'.$zip_name.'"'); 
         ob_end_flush();//буферизация так как без неё ничего работать не будет 
        readfile($zip_name); //читаем файл 
 
        unlink($zip_name);//удаляем переменную 
    } 
 } 
 
}  

READ ALSO
Проблемы с отправкой POST запроса с помощью cURL

Проблемы с отправкой POST запроса с помощью cURL

Пытаюсь отправить вот такой POST запрос:

217
Количество вакансий php и nodejs разработчиков(backend) [требует правки]

Количество вакансий php и nodejs разработчиков(backend) [требует правки]

Вопрос не о том какой язык лучше, а о том с каким легче найти работу в провинции

220
Шифровка и расшифровка на php

Шифровка и расшифровка на php

Есть код товара: 544049568640 возможно ли это шифровать например как то так: ZUePM2pD7zChI1 потом обратно расшифровать в 544049568640

245
Каким образом отменить перенаправление с поддомена

Каким образом отменить перенаправление с поддомена

ЗдравствуйтеХочу сделать динамическое создание поддоменов

205