Перенос файлов в другую папку/директорию PHP

22.07.2021

Рассмотрим несколько примеров переноса файлов из одной папки в другую на php

Простой перенос файла на PHP

Если папка в которую переносим уже существует!

Тут все элементарно, просто используем функцию rename()

// указываем путь текущего файла и куда его переносим
rename("/folder_1/image.jpg", "/folder_2/image.jpg");

Перенос файлов с созданием папки на PHP

Тут нам просто нужно дописать проверку на существование нужной папки и если её нет, то создать.


    // файл, который нужно перенести
    $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);
    }

Массовый перенос файлов на PHP


// массив с полными путями файлов для переноса
$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


Возврат к списку