Для отправки массива файлов на сервер в 1C-Bitrix вы можете использовать компонент "Форма загрузки файлов" или использовать API-методы.
Прежде всего, убедитесь, что в форме на вашем сайте присутствует input типа "file" с атрибутом "multiple", чтобы пользователь мог выбрать несколько файлов для загрузки.
После того, как пользователь выбрал файлы, вам необходимо обработать эти файлы на сервере. В 1C-Bitrix вы можете использовать следующие методы:
1. CFile::SaveFile
$arSavedFiles = []; foreach($_FILES["name"] as $key => $name) { $tmp_name = $_FILES["tmp_name"][$key]; $error = $_FILES["error"][$key]; if($error == UPLOAD_ERR_OK) { $arFile = [ "name" => $name, "size" => $_FILES["size"][$key], "tmp_name" => $tmp_name, "type" => $_FILES["type"][$key], "MODULE_ID" => "your_module_id" // типичные значения: "iblock", "catalog" и т.д. ]; $savedFileId = CFile::SaveFile($arFile, "your_folder_path"); if($savedFileId) { $arSavedFiles[] = $savedFileId; } else { // Обработка ошибок загрузки файла } } else { // Обработка ошибок загрузки файла } }
В этом примере мы используем метод CFile::SaveFile
, который принимает массив с информацией о файле и папку, в которую нужно сохранить файл. Мы также добавляем MODULE_ID, чтобы файл был связан с соответствующим модулем 1C-Bitrix.
2. CIBlockElement::SetPropertyValueCode
$arFiles = []; foreach($_FILES["name"] as $key => $name) { $tmp_name = $_FILES["tmp_name"][$key]; $error = $_FILES["error"][$key]; if($error == UPLOAD_ERR_OK) { $arFile = [ "name" => $name, "size" => $_FILES["size"][$key], "tmp_name" => $tmp_name, "type" => $_FILES["type"][$key], "MODULE_ID" => "your_module_id" // типичные значения: "iblock", "catalog" и т.д. ]; $fileId = CFile::SaveFile($arFile, "your_folder_path"); if($fileId) { $arFiles[] = [ "VALUE" => $fileId, "DESCRIPTION" => "" // Описание файла (необязательно) ]; } else { // Обработка ошибок загрузки файла } } else { // Обработка ошибок загрузки файла } } // Далее обновляем свойство "Файл" элемента инфоблока $el = new CIBlockElement; $propCode = "PROPERTY_CODE"; // Код свойства "Файл" (предварительно создан в админке) $res = $el->Update($elementId, [ $propCode => $arFiles ]); if(!$res) { // Обработка ошибок обновления свойства }
В этом примере мы использовали метод CIBlockElement::SetPropertyValueCode
, который позволяет задать значение свойства элемента инфоблока. Мы сохраняем идентификаторы загруженных файлов в массив $arFiles
и обновляем свойство "Файл" элемента с помощью метода Update
.
Оба эти метода позволяют загружать несколько файлов одновременно и обрабатывать ошибки, если они возникнут при загрузке. Важно учесть, что пути идентификаторов загруженных файлов будут относительными и будут указывать на папку upload
в корне сайта. Если необходимо получить абсолютный путь к файлу, вы можете использовать метод CFile::GetByID
.