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

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

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

Описание метода CFile::MakeFileArray

Метод CFile::MakeFileArray принимает несколько параметров и возвращает массив, который представляет собой структуру файла в формате, аналогичном массиву $_FILES. Он может использоваться в методах SaveFile, CheckFile и CheckImageFile для работы с файлами на сайте.

Структура возвращаемого массива

Метод возвращает массив следующего вида:

Array(
    "name" => "название файла",
    "size" => "размер",
    "tmp_name" => "временный путь на сервере",
    "type" => "тип загружаемого файла"
)
  • name — название файла.
  • size — размер файла.
  • tmp_name — временный путь файла на сервере.
  • type — MIME-тип файла (например, image/jpeg).

Параметры метода

Метод принимает следующие параметры:

Параметр Описание С версии
path Путь к файлу. Может быть ID файла, абсолютный путь, относительный путь или URL.
mime_type MIME-тип файла (например, image/gif). Необязательный. По умолчанию определяется автоматически.
skipInternal Если true, метод не будет использовать ID файла как путь. По умолчанию false. 12.5.7
external_id Внешний идентификатор файла. Необязательный параметр.

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

Теперь давайте рассмотрим несколько примеров использования метода CFile::MakeFileArray на практике.

Пример 1: Создание массива для файла с использованием абсолютного пути

Предположим, у нас есть изображение на сервере, и нам нужно создать его описание для дальнейшей загрузки. Мы используем абсолютный путь к файлу:

$arFile = CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"]."/images/screen.gif");
$arFile["MODULE_ID"] = "support";  // Указываем модуль, к которому относится файл

// Пример использования файла в создании тикета
$arFields = array(
    "CREATED_MODULE_NAME"   => "mail",
    "MODIFIED_MODULE_NAME"  => "mail",
    "OWNER_SID"             => "user@mail.ru",
    "SOURCE_SID"            => "email",
    "MESSAGE_AUTHOR_SID"    => "user@mail.ru",
    "MESSAGE_SOURCE_SID"    => "email",
    "TITLE"                 => "title",
    "MESSAGE"               => "message",
    "FILES"                 => array($arFile)  // Прикрепляем файл к сообщению
);

// $NEW_TICKET_ID = CTicket::Set($arFields, $MESSAGE_ID, $TICKET_ID, "N");

Здесь мы передаем путь к файлу screen.gif на сервере и создаем массив с его описанием.

Пример 2: Создание массива для файла по URL

Можно передать URL файла на внешнем ресурсе. Метод автоматически загрузит файл и создаст его описание.

$arFile = CFile::MakeFileArray("https://example.com/files/our_price.xls");

// Добавляем файл в рассылку
return array(
    "SUBJECT" => "Рассылка с прайс-листом",
    "BODY_TYPE" => "html",
    "CHARSET" => "Windows-1251",
    "DIRECT_SEND" => "Y",
    "FROM_FIELD" => "info@example.com",
    "FILES" => array($arFile)
);

В этом примере файл our_price.xls загружается с внешнего ресурса и добавляется в рассылку.

Пример 3: Использование с типом MIME

Если необходимо указать MIME-тип для файла, можно передать его в качестве второго параметра.

$arFile = CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"]."/images/photo.jpg", "image/jpeg");

// Сохраняем файл в системе
CFile::SaveFile($arFile, "custom_module");

В данном случае мы указываем MIME-тип изображения как image/jpeg, что может быть полезно для корректной обработки файлов в системе.

Пример 4: Использование с ID файла

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

$arFile = CFile::MakeFileArray(123);  // ID существующего файла
$arFile["MODULE_ID"] = "blog";

// Добавляем файл в сообщение блога
$arFields = array(
    "TITLE" => "Заголовок статьи",
    "CONTENT" => "Содержание статьи",
    "FILES" => array($arFile)
);

CBlogPost::Add($arFields);

Здесь мы передаем ID файла и используем его для добавления в статью блога.

Пример 5: Проверка и сохранение файла

Вы также можете использовать метод CFile::CheckFile для проверки файла перед его сохранением.

$arFile = CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"]."/images/photo.png");
if (CFile::CheckFile($arFile)) {
    CFile::SaveFile($arFile, "gallery");
}

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

Заключение

Метод CFile::MakeFileArray — мощный инструмент для работы с файлами в 1С-Битрикс. Он позволяет создавать описание файлов, загружать их с различных источников (локальный сервер, внешний URL, FTP) и использовать эти файлы в различных компонентах системы, таких как формы, рассылки, тикеты и другие.

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

Теги:  CFile::MakeFileArray, работа с файлами, CMS, Bitrix, загрузка файлов, сохранение файлов

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

Техническая поддержка

выполняется с сайтами на основе любых CMS

от 5 000 рублей
Оптимизация производительности действующих интернет-проектов, наполнение и сопровождение, полная техническая поддержка и продвижение в поисковых сетях.

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

Разработка интернет-магазина с готовой версткой

от 4 недель

от 90 000 рублей

* указана минимальная стоимость. Стоимость выбранной лицензии «1С-Битрикс» оплачивается отдельно.

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

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

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

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