#файлы #php
Есть папка A Есть папка Б Нужно перенести содержимое Б в А. Содержимое может совпадать по имени. Т.е. если совпали папки, то просто переносится содержимое папки, если совпали файлы, то перезаписываются. Если папки нет, то создается и переносятся данные. Здесь очень похожая функция, но не работает с совпадениями. Думаю многие встречались с подобным. p.s. как запасной план, использовать линуксовые возможности.
Ответы
Ответ 1
Создается функция которая принимает на вход путь и создаёт папки для этого пути. (например, mkdirs('/home/pupkin/dirs/A'); на каждой папке проверяет её существование, если папки не существует - то создаём её если существует то ничего не делаем, переходим к вледующей части пути) Создаётся функция рекурсивного копирования. recursiveCopy($from, $to) читаем содержимое папки $from в цикле: если это файл то: копируем его из $from.'/'.$file в $to.'/'.$file если это папка: mkdirs($to.'/'.$file); recursiveCopy($from.'/'.$file, $to.'/'.$file); вот и всё.Ответ 2
Вот, готовый код. $from - откуда копируем, $to - куда. Пути задавать полные (ну по крайне мере у меня работает так, если $from/$to = '../from/'/'../to/') Одно, что папки from и to должны быть указаны, остальные папки, которые есть в папке from, в to создаются сами, удачной работы)) function recursiveCopy($from, $to){ if(!file_exists($to)){ mkdir($to); } if ($objs = glob($from."/*")) { foreach($objs as $obj) { $forto=$to.str_replace($from, '', $obj); // echo $to.'
'; if(is_dir($obj)){ removeDirRec($obj, $forto); } else{ copy($obj, $forto); } } } return true; }
Комментариев нет:
Отправить комментарий