22.07.2021
Рассмотрим несколько примеров переноса файлов из одной папки в другую на php
Если папка в которую переносим уже существует!
Тут все элементарно, просто используем функцию rename()
// указываем путь текущего файла и куда его переносим
rename("/folder_1/image.jpg", "/folder_2/image.jpg");
Тут нам просто нужно дописать проверку на существование нужной папки и если её нет, то создать.
// файл, который нужно перенести
$oldFilePath = "/folder_old/file.txt";
// новый путь этого файла
$newFilePath = "/folder_new/some_folder/file.txt";
// Получаем адрес директории нового пути
$newFolderPath = pathinfo($newFilePath)["dirname"];
// смотрим, есть ли нужная новая директория или пытаемся её создать
if(file_exists($newFolderPath) || mkdir($newFolderPath, 0777, true))
{
// перемещаем
rename($oldFilePath, $newFilePath);
}
// массив с полными путями файлов для переноса
$moveToDelete = [
"/home/bitrix/content/uploads/aaa/bbb/skin.png",
"/home/bitrix/content/uploads/aaa/aaa.png",
];
// перебираем файлы
foreach($moveToDelete as $filePathToMove){
$newFilePath = $newFolderPath = "";
// новый путь до файла. Тут может быть любая ваша логика, я просто подменяю нужный путь
$newFilePath = str_replace("/content/uploads/","/content/NEW_FOLDER/uploads/", $filePathToMove);
// Получаем адрес директории нового пути
$newFolderPath = pathinfo($newFilePath)["dirname"];
// смотрим, есть ли нужная новая директория или пытаемся её создать
if(file_exists($newFolderPath) || mkdir($newFolderPath, 0777, true))
{
// перемещаем
rename($filePathToMove, $newFilePath);
}
}
После переноса файлов может понадобится Удалить пустые папки на PHP