Страница 1 из 2
[Решено] API. Как добавлять файлы в поле "Вложения"?
Добавлено: 03 июн 2024, 19:54
tehnos
Задача добавлять файлы к записям в поле "Вложения".
Возможно ли это? В документации не нашёл этой возможности.
Re: API. Как добавлять файлы в поле "Вложения"?
Добавлено: 04 июн 2024, 13:08
support
Re: API. Как добавлять файлы в поле "Вложения"?
Добавлено: 04 июн 2024, 14:21
tehnos
Благодарю!
Re: API. Как добавлять файлы в поле "Вложения"?
Добавлено: 04 июн 2024, 16:46
tehnos
Работает, но есть нюанс.
При добавлении файла, предыдущий удаляется.
Можно ли добавлять файлы без удаления ранее прикреплённых?
Re: API. Как добавлять файлы в поле "Вложения"?
Добавлено: 05 июн 2024, 07:55
support
Re: API. Как добавлять файлы в поле "Вложения"?
Добавлено: 05 июн 2024, 14:32
tehnos
Спасибо!
Однако видимо есть ещё баг.
При попытке передать массив файлов $files, PHP сообщает об ошибке:
Код: Выделить всё
[Wed Jun 05 14:29:21.171605 2024] [php:error] [pid 60358] [client 192.168.1.2:50334] PHP Fatal error: Uncaught TypeError: strlen(): Argument #1 ($string) must be of type string, array given in /var/www/oms/plugins/ext/classes/api/api.php:1072
Stack trace:
#0 /var/www/oms/plugins/ext/classes/api/api.php(75): api->action_update()
#1 /var/www/oms/api/rest.php(58): api->request()
#2 {main}
thrown in /var/www/oms/plugins/ext/classes/api/api.php on line 1072
Если переменная $files является строкой (например, ссылка на файл) - всё работает.
Re: API. Как добавлять файлы в поле "Вложения"?
Добавлено: 05 июн 2024, 14:56
support
А покажите ваш код.
Re: API. Как добавлять файлы в поле "Вложения"?
Добавлено: 05 июн 2024, 15:26
tehnos
field_727 - тип поля "Вложения"
Код: Выделить всё
// смотрим уже добавленные вложения
$query = array(
'entity_id' => 27,
'select_fields' => '727',
'filters' => array('id' => (string) $id)
);
$result = oms('select', $query);
// записываем имена файлов (вложений) в массив (если они есть)
$files = [];
if(!empty($result['data'][0]['727'])) {
foreach(explode(',', $result['data'][0]['727']) AS $filename) {
$files[] = ['name' => $filename];
}
}
// добавляем новый файл к ранее созданному массиву файлов
$files[] = [
'name' => $file_name,
'content' => base64_encode(file_get_contents($file_link))
];
// отправляем вложения в запись
$query = array(
'entity_id' => 27,
'data' => array('field_727' => $files),
'update_by_field' => array('id' => (string) $id)
);
$result = oms('update', $query);
Re: API. Как добавлять файлы в поле "Вложения"?
Добавлено: 05 июн 2024, 16:04
support
А версия программы какая?
Re: API. Как добавлять файлы в поле "Вложения"?
Добавлено: 05 июн 2024, 16:09
tehnos
Я кажется понимаю где у меня ошибка.
Разбираю. Напишу о результате.