Руководство по использованию метода CFile::GetFileArray в CMS 1С-Битрикс

В CMS 1С-Битрикс есть удобный метод для работы с файлами — CFile::GetFileArray. Этот метод позволяет быстро получить массив данных о файле по его идентификатору. В этой статье мы подробно рассмотрим его использование, параметры и приведем примеры с реальными сценариями.

Руководство по использованию метода CFile::GetFileArray в CMS 1С-Битрикс

Что такое метод CFile::GetFileArray?

Метод CFile::GetFileArray используется для получения информации о файле, который был загружен в систему. Это статический метод класса CFile, и его основной задачей является извлечение данных о файле, таких как имя, путь, размер и другие метаданные.

Сигнатура метода:

mixed CFile::GetFileArray(int FILE_ID, $upload_dir = false)

Параметры:

  1. FILE_ID (int) – Идентификатор файла. Это обязательный параметр, который указывает на файл, информацию о котором нужно получить. Идентификатор передается в виде числа.
  2. $upload_dir (string, optional) – Директория для загрузки. По умолчанию этот параметр имеет значение false, что означает, что путь будет автоматически рассчитан исходя из настроек CMS. Если же вам нужно указать свою директорию, вы можете передать ее здесь.

Возвращаемое значение:

Метод возвращает ассоциативный массив, содержащий информацию о файле. Если файл не найден, возвращается false.

Поля массива:

Когда метод успешно находит файл, возвращаемый массив содержит следующие поля:

  • ID — идентификатор файла.
  • TIMESTAMP_X — дата загрузки файла.
  • MODULE_ID — идентификатор модуля, загрузившего файл.
  • HEIGHT — высота изображения (если файл — изображение).
  • WIDTH — ширина изображения (если файл — изображение).
  • FILE_SIZE — размер файла в байтах.
  • CONTENT_TYPE — MIME-тип файла.
  • SUBDIR — поддиректория внутри папки UPLOAD.
  • FILE_NAME — имя файла после обработки.
  • ORIGINAL_NAME — исходное имя файла при загрузке.
  • DESCRIPTION — описание файла.
  • SRC — относительный путь к файлу.
  • EXTERNAL_ID — внешний идентификатор файла.

Примеры использования метода

Пример 1: Получение изображения анонса для элемента инфоблока

Предположим, у нас есть элемент инфоблока с изображением анонса, и мы хотим вывести его на сайте.


$ELEMENT_ID = 123; // Идентификатор элемента инфоблока

if (CModule::IncludeModule('iblock')) {
    $rsElement = CIBlockElement::GetList(
        array(),
        array("=ID" => $ELEMENT_ID),
        false,
        false,
        array("PREVIEW_PICTURE")
    );
    if ($arElement = $rsElement->Fetch()) {
        $arFile = CFile::GetFileArray($arElement["PREVIEW_PICTURE"]);
        if ($arFile) {
            echo 'Анонс изображения';
        }
    }
}
    

В этом примере мы используем метод CFile::GetFileArray, чтобы получить путь к изображению анонса, после чего выводим его с помощью HTML-тега .

Пример 2: Получение всех файловых свойств элементов

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


foreach ($arResult["ITEMS"] as $k => $v) {
    foreach ($v["PROPERTIES"] as $kk => $vv) {
        if ($vv["PROPERTY_TYPE"] == "F") {
            if ($vv["MULTIPLE"] == "Y") {
                foreach ($vv["VALUE"] as $kkk => $vvv) {
                    $arResult["ITEMS"][$k]["PROPERTIES"][$kk]["VALUE"][$kkk] = CFile::GetFileArray($vvv);
                    $arResult["ITEMS"][$k]["PROPERTIES"][$kk]["VALUE"][$kkk]["DESCRIPTION"] = $vv["DESCRIPTION"][$kkk];
                }
            } else {
                $arResult["ITEMS"][$k]["PROPERTIES"][$kk]["VALUE"] = CFile::GetFileArray($vv["VALUE"]);
                $arResult["ITEMS"][$k]["PROPERTIES"][$kk]["VALUE"]["DESCRIPTION"] = $vv["DESCRIPTION"];
            }
        }
    }
}
    

Здесь мы проходим по всем элементам и их свойствам, проверяем, является ли свойство типом "Файл" (PROPERTY_TYPE == "F"), и, если это так, используем CFile::GetFileArray для получения информации о файле.

Пример 3: Получение файлов в компоненте bitrix:news.list

В компоненте bitrix:news.list часто нужно работать с изображениями для вывода на сайт. Рассмотрим пример, где мы извлекаем файлы для превью и детального изображения.


$rsElement = CIBlockElement::GetList($arSort, $arFilter, false, $arNavParams, $arSelect);
while ($obElement = $rsElement->GetNextElement()) {
    $arItem = $obElement->GetFields();
    ...
    if (array_key_exists("PREVIEW_PICTURE", $arItem)) {
        $arItem["PREVIEW_PICTURE"] = CFile::GetFileArray($arItem["PREVIEW_PICTURE"]);
    }
    if (array_key_exists("DETAIL_PICTURE", $arItem)) {
        $arItem["DETAIL_PICTURE"] = CFile::GetFileArray($arItem["DETAIL_PICTURE"]);
    }
    ...
}
    

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

Пример 4: Получение файла с дополнительными параметрами

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


$fileId = 123; // Идентификатор файла
$uploadDir = '/custom/upload/dir/'; // Пользовательская директория для загрузки

$fileArray = CFile::GetFileArray($fileId, $uploadDir);
if ($fileArray) {
    echo 'Файл найден: ' . $fileArray["SRC"];
} else {
    echo 'Файл не найден.';
}
    

Этот код поможет вам получать путь к файлам, если они находятся в нестандартной директории на сервере.

Заключение

Метод CFile::GetFileArray является мощным инструментом для работы с файлами в CMS 1С-Битрикс. Он позволяет быстро и удобно извлекать информацию о файлах, связанных с элементами инфоблоков, и использовать эти данные на сайте. В приведенных примерах показаны различные способы использования этого метода для работы с изображениями, файлами свойств и пользовательскими директориями загрузки.

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

Теги:  CFile::GetFileArray, CMS, работа с файлами, PHP, методы, инфоблоки

Стоимость услуг по разработке и сопровождению сайтов на 1C-Битрикс

Лечение сайтов от вирусов

восстановление сайта и подъем версии PHP

от 25 000 рублей
Лечение сайтов на решениях АСПРО и прочих.

* полный комплекс лечения проекта и закрытия дыр

Модули и компоненты для «1С-Битрикс»

оценка производится на основе предоставленного Технического Задания

от 20 000 рублей
Разработка дополнительных модулей для 1С-Битрикс, расширение функционала, внедрение любых решений, требующихся для выполнения ваших бизнес-задач.

* стоимость зависит от конкретной задачи, ее объема и сложности выполняемых работ.

Перенос сайтов на «1С-Битрикс»

сайты на платформе «1С-Битрикс» — это удобство, надежность и высокая посещаемость

от 12 000 рублей
Перенос сайтов с любых CMS и статичных страниц на платформу «1С-Битрикс», с учетом дизайна, верстки и урл-адресов. С сохранением всей информации и структуры сайта.

* зависит от объема выполняемых работ.