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

Описание метода 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, а также улучшить пользовательский опыт на вашем сайте.