8 (812) 467-35-15
Офис в Санкт-Петербурге
8 (800) 505-77-37
Бесплатный звонок
  • Битрикс24
  • Сайты и интернет-магазины
  • Индивидуальная разработка
  • Портфолио
  • AI
  1. Главная
  2. /
  3. Блог
  4. /
  5. Переименовываем картинки и прочие файлы в Битрикс

Переименовываем картинки и прочие файлы в Битрикс

Переименовываем картинки и прочие файлы в Битрикс
Автор статьи:
Вячеслав Дудоров
Вячеслав Дудоров
СТО
Время прочтения:
3 минуты
При добавлении нового файла в Битрикс, система его переназывает в случайный набор символов. Как правило, при разработке это не вызывает никаких проблем, но на стадии релиза оказывается, что клиенту принципиально, чтобы файлы назывались именно так, как он вам их передал.

При добавлении нового файла в Битрикс, система его переназывает в случайный набор символов. Как правило, при разработке это не вызывает никаких проблем, но на стадии релиза оказывается, что клиенту принципиально, чтобы файлы назывались именно так, как он вам их передал. Для того, чтобы избежать проблем в дальнейшем, достаточно в настройках главного модуля включить галочку "Сохранять исходные имена загружаемых файлов":

Но что делать, если вы разрабатываете сайт "под ключ" и уже залили сотни, а то и тысячи файлов? Иногда есть возможность сделать повторный импорт товаров и прочих элементов с файлами, с учетом отмеченного выше чекбокса все должно получиться.

У нас возникла задача вернуть всем файлам первоначальные имена, либо переназвать их в соответствии с символьным кодом товара, к которому они привязаны. По ряду причин не было возможности просто сделать новый импорт каталога товаров, поэтому недолго думая мы решили написать не большую функцию, которая бы выполнила данную задачу. Сразу скажу, что код не претендует на какое-то универсальное решение, возможно какие-то моменты в нем можно улучшить, но его единственной задачей было запуститься 1 раз и поменять все файлов. 

Задача немного осложнялась тем, что помимо основной фотографии у товара также были дополнительные, которые хранились в отдельном свойстве типа "файл". Ниже я приведу полный код, далее разберу его по частям.




$arSelect = Array("ID", "NAME", "CODE", "PROPERTY_MORE_PHOTO", "DETAIL_PICTURE");
$arFilter = Array("IBLOCK_ID"=>6);
$res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect);
$prods = [];
while($ob = $res->GetNextElement())
{
    $arFields = $ob->GetFields();
    $prods[] = $arFields;
}

foreach ($prods as $prod) {
    $photos = [];
    $photos[] = $prod['DETAIL_PICTURE'];
    foreach ($prod['PROPERTY_MORE_PHOTO_VALUE'] as $mphoto) {
        $photos[] = $mphoto;
    }
    $isMoreOne = count($photos) > 1 ? true : false;
    $i = 0;
    foreach ($photos as $photo) {
        $newName = $prod['CODE'];
        if ($isMoreOne && $i++ > 0)
           $newName .= "-".$i++;

        renameFileDBbyID($photo, $newName);
    }
    unset($i);
}

function renameFileDBbyID($id, $newName = null){
    $connection = Bitrix\Main\Application::getConnection();
    
    $sql = "SEL ECT * FR OM b_file WH ERE ID = $id";
    $recordset = $connection->query($sql);
    while ($record = $recordset->fetch())
    {
        if(!preg_match('/-/', $record['FILE_NAME'])) {
            if (preg_match('/.png/', $record['FILE_NAME']))
                $newName = $newName.'.png';
            else
                $newName = $newName.'.jpg';

            renameFile($id, $newName);

            $connection->queryExecute("UPD ATE b_file SE T FILE_NAME = '$newName' WHERE ID = $id ");
        }
    }
}

function renameFile($id, $newName = null){
    $fileArr = CFile::GetFileArray($id);
    $path = '/upload/'.$fileArr['SUBDIR'].'/'.$fileArr['FILE_NAME'];
    $newPath = '/upload/'.$fileArr['SUBDIR'].'/'.$newName;

    $file = new \Bitrix\Main\IO\File(\Bitrix\Main\Application::getDocumentRoot().$path);
    $file->rename(\Bitrix\Main\Application::getDocumentRoot().$newPath);

}


А теперь по частям.


$arSelect = Array("ID", "CODE", "PROPERTY_MORE_PHOTO", "DETAIL_PICTURE");
$arFilter = Array("IBLOCK_ID"=>6);
$res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect);
$prods = [];
while($ob = $res->GetNextElement())
{
    $arFields = $ob->GetFields();
    $prods[] = $arFields;
}

foreach ($prods as $prod) {
    $photos = [];
    $photos[] = $prod['DETAIL_PICTURE'];
    foreach ($prod['PROPERTY_MORE_PHOTO_VALUE'] as $mphoto) {
        $photos[] = $mphoto;
    }
    $isMoreOne = count($photos) > 1 ? true : false;
    $i = 0;
    foreach ($photos as $photo) {
        $newName = $prod['CODE'];
        if ($isMoreOne && $i++ > 0)
           $newName .= "-".$i++;

        renameFileDBbyID($photo, $newName);
    }
    unset($i);
}


Сначала получаем список товаров с информацией о детальном изображении и дополнительных фотографиях (свойство "PROPERTY_MORE_PHOTO"). Если у Вас есть опыт работы с Битрикс, то Вы знаете, что информация о любых привязанных файлах, в т.ч. и изображениях, приходят в виде ID этого самого файла. После получения списка товаров, мы проходим по нему циклом, в котором сначала собираем в массив все id изображений, а потом сразу же запускаем еще один цикл, который по очереди берет id`шники, формирует новое имя файла и запускает наши функции "renameFileDBbyID" и "renameFile" (внизу в листинге кода).

Теперь пробежимся по самим функциям. Т.к. в базе данных хранится только информация о файлах, а сами файлы хранятся просто в папке на хостинге, то и изменения нам нужно вносить в двух местах: изменить запись в БД, изменить имя файла. Сначала пробежимся по функции, которая будет переназывать сам файл:

function renameFile($id, $newName = null){
    $fileArr = CFile::GetFileArray($id);
    $path = '/upload/'.$fileArr['SUBDIR'].'/'.$fileArr['FILE_NAME'];
    $newPath = '/upload/'.$fileArr['SUBDIR'].'/'.$newName;

    $file = new \Bitrix\Main\IO\File(\Bitrix\Main\Application::getDocumentRoot().$path);
    $file->rename(\Bitrix\Main\Application::getDocumentRoot().$newPath);

}
На вход мы передаем id и новое имя. Первым делом, используя функцию Битрикса CFile::GetFileArray($id), получаем информацию по файлу, в первую очередь нас интересует текущее имя файла и подпапка, той папки в которой сохраняются файлы, обычно это папка "upload". Далее строим текущий путь к файлу и новый, переменные $path и $newPath. Для получения и переименования файла используем класс Битрикс \Bitrix\Main\IO\File.С файлом разобрались.

Теперь переходим к работе с БД. Информация о файлах хранится в таблице b_file. В Битрикс есть стандартные функции, которых полностью хватает для решения нашей задачи. Создаем подключение, находим нужную запись по ID. В принципе, можно сразу обновлять строку в БД по ID файла, но в нашем случае был нюанс, по которому нужно было изменять не все записи, а только те, у которых в названии нету символа "-", но тут уже каждый сам напишет, что нужно в его случае. Другими словами минимальные необходимые строки для внесения изменений: Создание подключения $connection = Bitrix\Main\Application::getConnection(); , внесение изменений в БД $connection->queryExecute("UPD ATE b_file SE T FILE_NAME = '$newName' WHERE ID = $id ");



function renameFileDBbyID($id, $newName = null){
    $connection = Bitrix\Main\Application::getConnection();
    
    $sql = "SELECT * FR OM b_file WHERE ID = $id";
    $recordset = $connection->query($sql);
    while ($record = $recordset->fetch())
    {
        if(!preg_match('/-/', $record['FILE_NAME'])) {
            if (preg_match('/.png/', $record['FILE_NAME']))
                $newName = $newName.'.png';
            else
                $newName = $newName.'.jpg';

            renameFile($id, $newName);

            $connection->queryExecute("UPD ATE b_file SE T FILE_NAME = '$newName' WHERE ID = $id ");
        }
    }
}


Хотите обсудить ваш проект?
Анастасия Тюлькина
Продакт-менеджер
Название картинки
Похожие материалы
IP-телефония и автоматизация звонков в CRM: возможности для бизнеса в 2026 году
IP-телефония и автоматизация звонков в CRM: возможности для бизнеса в 2026 году
Телефонные звонки по-прежнему решают в продажах и работе с клиентами, особенно когда на кону сложные вопросы и высокий чек. В статье разбираем, как IP-телефония, интегрированная с CRM, превращает звонки в управляемый и прибыльный бизнес-инструмент.
19.01.2026
Что такое CRM-маркетинг и как он помогает бизнесу расти
Что такое CRM-маркетинг и как он помогает бизнесу расти
Привлекать новых клиентов становится всё дороже — и это новая реальность для бизнеса. В статье разбираем, что такое CRM-маркетинг, почему обычная CRM часто не даёт ожидаемого эффекта и как системная работа с клиентской базой помогает увеличивать повторные продажи, LTV и лояльность без постоянного роста рекламных бюджетов. Материал будет полезен предпринимателям и маркетологам, которые хотят превратить CRM из «блокнота» в инструмент роста.
17.12.2025
Bitrix GPT в Битрикс24: как ИИ преобразил CRM и внутренние процессы компании
Bitrix GPT в Битрикс24: как ИИ преобразил CRM и внутренние процессы компании
Обновлённый Bitrix GPT радикально меняет работу CRM и внутренних процессов. Искусственный интеллект автоматически анализирует звонки, создает задачи, пишет тексты, оптимизирует бизнес-процессы и делает работу команд быстрее, точнее и проще.
21.11.2025
Битрикс24
  • Внедрение
  • Поддержка
  • API интеграции
  • АИ-решения
  • Интеграция с 1С
  • Приложения
  • Обучение
  • Аудит
  • Индивидуальная разработка
  • Лицензии
Полезное
  • Блог
  • Портфолио
  • Партнёрская программа
Индивидуальная разработка
  • Веб-сервисы
  • Личные кабинеты
  • Калькуляторы
  • Приложения Битрикс24
  • API интеграции
  • AI
О компании
  • О компании
  • Вакансии
  • Контакты
  • Реквизиты
  • Политика конфиденциальности
  • Согласие на обработку персональных данных
Сайты и магазины
  • Интернет-магазины
  • Корпоративные сайты
  • Поддержка сайтов
  • Аудит сайтов
  • Техническое SEO
  • Композитный сайт
  • Администрирование серверов
  • Лицензии
Off Group - логотип
+7 (812) 467-35-15
Бесплатный звонок по России
8 (800) 505-77-37
Санкт-Петербург, ул. Уральская, д.13, лит.К, оф. 312
hello@off-group.com
Золотой партнёр Битрикс24Золотой сертифицированный партнёр 1С-БитриксИТ-аккредитация
© 2018-2026 Off Group. Товарный знак защищен правами.
8 (812) 467-35-15 8 (800) 505-77-37
Битрикс24
  • Внедрение
  • Поддержка
  • API интеграции
  • АИ-решения
  • Интеграция с 1С
  • Приложения
  • Обучение
  • Аудит
  • Индивидуальная разработка
  • Лицензии
Сайты и магазины
  • Интернет-магазины
  • Корпоративные сайты
  • Поддержка сайтов
  • Аудит сайтов
  • Техническое SEO
  • Композитный сайт
  • Администрирование серверов
  • Лицензии
Разработка
  • Веб-сервисы
  • Личные кабинеты
  • Калькуляторы
  • Приложения Битрикс24
  • API интеграции
  • AI
Информация
  • О компании
  • Вакансии
  • Контакты
  • Реквизиты
  • Политика конфиденциальности
  • Согласие на обработку персональных данных
Полезное
  • Блог
  • Портфолио
  • Партнёрская программа
Мы используем файлы cookie, чтобы улучшить работу сайта, анализировать трафик и персонализировать контент. Продолжая просмотр, вы соглашаетесь с нашей [Политикой конфиденциальности]
Заказать консультацию
Оставьте свои контакты и мы свяжемся с вами в течение рабочего дня.
Поле Имя не может быть короче 2 символов
Не верный телефон
Необходимо согласие
Заказать аудит
Оставьте свои контакты и мы свяжемся с вами в течение рабочего дня.
Поле Имя не может быть короче 2 символов
Не верный телефон
Необходимо согласие
Посчитать проект
Опишите ваши задачи и мы сможем предварительно их оценить.
Добавьте описание проекта
Вы можете прикрепить готовое техническое задание или любые другие материалы, которые помогут нам оценить ваш проект
Добавьте файл
Поле Имя не может быть короче 2 символов
Не верный телефон
Не верная почта
Необходимо согласие
Данные успешно
отправлены
Пригласить в офис
Поле Имя не может быть короче 2 символов
Не верный телефон
Добавьте комментарий
Необходимо согласие
Добавление клиента
Поле Название клиента не может быть короче 2 символов
Поле Вид работ не может быть короче 2 символов
Поле Логин не может быть короче 2 символов
Поле пароль должно содержать только латинскике буквы, одну прописную букву, одно числовое значение, один специальный символ !@#$%^&*_+. Общая длина должна быть больше или равна 8
Редактирование клиента
Поле Название клиента не может быть короче 2 символов
Поле Проект не может быть короче 2 символов
Начисление часов
Клиент 1
Клиент 2
Клиент 3
Клиент 4
Клиент 5
Клиент 6
Поле Клиент обязательное поле
Пакет 1
Поле Пакет поддержки обязательное поле
Поле Количество Часов не может быть короче 2 символов
Поле Срок действия не может быть короче 2 символов
Поле Срок действия не может быть короче 2 символов
Вы уверены, что хотите сбросить пароль клиенту?
Новый пароль
Поле пароль должно содержать только латинскике буквы, одну прописную букву, одно числовое значение, один специальный символ !@#$%^&*_+. Общая длина должна быть больше или равна 8
Вход
Поле Логин не может быть короче 2 символов
Поле пароль должно содержать только латинскике буквы, одну прописную букву, одно числовое значение, один специальный символ !@#$%^&*_+. Общая длина должна быть больше или равна 8
Забыли пароль
Запрос на сброс пароля будет направлен вашему интегратору
Отправить бриф
Оставьте свои контакты и мы свяжемся с вами в течение рабочего дня.
Поле Имя не может быть короче 2 символов
Не верный телефон
Не верная почта
Добавьте описание проекта
Добавьте файл
Сертификати
Георгия Героева
Название картинки
Название картинки
Название картинки
Название картинки
Название картинки
Название картинки
Название картинки
Название картинки
Название картинки
Название картинки
Название картинки
Название картинки
Проекты
Георгия Героева
Название картинки
HGHYJ
Разработка сайта недвижимости
Интернет магазины Интернет магазины Интернет магазины
Название картинки
HGHYJ
Разработка сайта недвижимости
Интернет магазины Интернет магазины Интернет магазины
Публикации
Георгия Героева
Название картинки
20.12.2024
Заголовок новости/статьи
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.Lorem...
Название картинки
20.12.2024
Заголовок новости/статьи
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.Lorem...
Название картинки
20.12.2024
Заголовок новости/статьи
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.Lorem...
Название картинки
20.12.2024
Заголовок новости/статьи
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.Lorem...
Регистрация партнера
Заполните данные, чтобы присойденится к партнерской программе OFF Group
1/2 Персональные данные
Поле Имя не может быть короче 2 символов
Поле Фамилия не может быть короче 2 символов
Не верный телефон
Не верный Email
Поле Название компании не может быть короче 2 символов
Поле Организационно-правовая форма не может быть короче 2 символов
Поле ИНН не может быть короче 2 символов
Поле Сайти не может быть короче 2 символов
Поле ID Партнера Битрикс24 не может быть короче 2 символов
Необходимо согласие
Передать клиентка
Поле Имя не может быть короче 2 символов
Не верный телефон
Не верный Email
Добавьте Описание задачи клиента
Купить лицензию
Заполните данные по лицензии. Счет на оплату будет отправлен на почту, указанную при регистрации
Поле ID партнера не может быть короче 2 символов
Поле Адрес портала Битрикс24 клиента не может быть короче 2 символов
Лицензия Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 120 000 руб.240 000 руб.
Лицензия Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 120 000 руб.240 000 руб.
Лицензия Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 120 000 руб.240 000 руб.
Поле Лицензии обязательное поле
Купить лицензию
Заполните данные по лицензии. Счет на оплату будет отправлен на почту, указанную при регистрации
Поле Имя не может быть короче 2 символов
Не верный телефон
Поле Лицензии обязательное поле
Нужна помощь в настройке
Опишите ваши задачи и мы сможем предварительно их оценить.
Добавьте Описание
Добавьте файл
Поле Имя не может быть короче 2 символов
Не верный телефон
Не верный Email