Загрузка/добавление файла(ов) в свойство, если там уже есть файлы
Чтобы загрузить файл в свойство, если там уже есть файлы, нужно выполнить следующие действия:
$elementId = 5;
// перебор массива входных данных
foreach ($_FILES["files"]["name"] as $key => $value) {
$fileName = $_FILES["files"]["name"][$key];
$fileTmpName = $_FILES["files"]["tmp_name"][$key];
$fileType = $_FILES["files"]["type"][$key];
$file = CFile::MakeFileArray($fileTmpName);
$file['name'] = $fileName;
$currentFiles[] = $file;
}
//Дозапись файлов в свойство инфоблока
CIBlockElement::SetPropertyValueCode($elementId, 'FILE_FIELD', $currentFiles);
Код выше добавит файл(ы) в свойство "FILE_FIELD" элемента инфоблока с ID=5, если там уже были загружены другие файлы.
Удаление файла
Если нужно удалить файл из свойства множественного свойства типа "Файл", нужно выполнить следующие действия:
// Параметры для выборки значений свойства
$fileId = 1024; // ID файла, который нужно удалить
$elementId = 5; // ID элемента инфоблока
$iblockId = 5; // ID инфоблока
$fieldCode = 'FILE_FIELD'; // Код поля, содержащего файл
// Получаем значения свойства
$currentPropertyValues = CIBlockElement::GetProperty($iblockId, $elementId, [], ['CODE' => $fieldCode]);
while ($property = $currentPropertyValues->Fetch()) {
if($property['VALUE'] == $fileId) { // Проверяем, равно ли значение в свойстве ID файла для удаления
// Удаляем файл из свойства
CIBlockElement::SetPropertyValueCode($elementId, $fieldCode,
array(
$property['PROPERTY_VALUE_ID'] => array(
"VALUE"=> array(
"MODULE_ID" => "iblock",
"del" => "Y" // Параметр, отвечающий за удаление файла
)
)
)
);
break; // Остановка цикла выборки
}
}
Код выше удалит файл с ID=1024 из свойства "FILE_FIELD" элемента инфоблока с ID=5.
Полная очистка свойства "Файл"
Если нужно полностью очистить свойство множественного свойства типа "Файл", нужно выполнить следующее действия:
$elementId = 5;
// Удаляем все файлы из свойства
CIBlockElement::SetPropertyValueCode($elementId, "FILE_FIELD", array());
Код выше полностью очистит свойство "FILE_FIELD" элемента инфоблока с ID=5.
* Или лучше использовать предыдущий вариант с параметром "del" => "Y" для всех элементов, так надежнее!
Заключение
Множественное свойство типа "Файл" - это удобный инструмент для работы с файлами в 1С Битрикс. С помощью приведенных примеров загрузки файла в поле, загрузки файла в свойство, удаления файла и полной очистки свойства, вы сможете эффективно использовать данную функцию. Если у вас возникнут какие-либо вопросы, обращайтесь к документации 1С Битрикс.