Вложения
Загрузка вложений
При добавлении/обновлении записи через API у вас есть возможность передать вложения для полей типа Вложения, Файл, Изображения. Существует два способа загрузки файл:
1) Передать файл по ссылке
$item = array(
'field_158' => 'Test api PROJECT ',
'field_242' => 'https://www.rukovoditel.net.ru/images/docs/dogovor_template.docx',
'field_162' => 'https://www.rukovoditel.net.ru/images/docs/dogovor_template.jpg',
);
Для поля вложения можно передать несколько ссылок через запятую
2) Передать содержимое файла.
$files = [];
$files[] = ['name'=>'file1.pdf','content'=>base64_encode(file_get_contents('file1.pdf'))];
$files[] = ['name'=>'file2.jpg','content'=>base64_encode(file_get_contents('file2.jpg'))];
$item = array(
'field_158' => 'Test api project ',
'field_162' =>$files,
);
В данном примере поле field_162
- это поле с типом "Вложения". В данное поле передаются массив из двух файлов. В массиве указано название файла и его контент. Контент необходимо закодировать в base64
.
Обновление вложений
При обновлении записи может возникнуть необходимость добавить вложение к уже существующим фалам. Что бы обновить вложения, вначале нужно получить название фалов уже существующей записи и в последствии передать только названия фалов, без параметра "content".
//получаем данные записи #33
$params = array(
'key' => '58p3crBBgK8Y5wzN5QIjI0cHeG78uibvt9xyuZaa',
'username' => 'admin',
'password' => 'admin',
'action' => 'select',
'entity_id' => 21,
'select_fields' => '162',
'filters' => ['id'=>33],
);
//...
$result = json_decode($result,true);
//Добавляем название существующих файлов, без параметра "content"
$files = [];
foreach(explode(',',$result['data'][0][162]) as $filename)
{
$files[] = ['name'=>$filename];
}
//Добавляем новые файлы
$files[] = ['name'=>'file3.jpg','content'=>base64_encode(file_get_contents('file3.jpg'))];
$data = array(
'field_158' => 'Test api project upd ' . date('Y-m-d H:i:s'),
'field_162' =>$files,
);
Скачивание вложений
Для скачивания файла через API существует метод download_attachment
. При вызове метода вам необходимо передать ID
записи и ID
поля в котором хранится файл.
$params = array(
'key' => 'KUhUvp8sGZv1vIlQATEQXr4HJT4SsWEjd8LWGSN6',
'username' => 'admin',
'password' => 'admin',
'action' => 'download_attachment',
'entity_id' => 21,
'item_id' => 1,
'field_id' => 207,
);
//...
if($result)
{
$result = json_decode($result,true);
if($result['status']=='success')
{
file_put_contents($result['data']['filename'], base64_decode($result['data']['content']));
}
}
При успешном выполнении программа возвращает название файла $result['data']['filename']
и его содержимое $result['data']['content']
в кодировке base64
.
Обратите внимание: если в поле хранится несколько файлов, будет возвращен zip архив со всеми файлами.
Удаление вложений
Для удаления файла через API существует метод delete_attachment
. При вызове метода вам необходимо передать ID
записи и ID
поля в котором хранится файл.
$params = array(
'key' => 'KUhUvp8sGZv1vIlQATEQXr4HJT4SsWEjd8LWGSN6',
'username' => 'admin',
'password' => 'admin',
'action' => 'delete_attachment',
'entity_id' => 21,
'item_id' => 2,
'field_id' => 162,
);
//...
if($result)
{
$result = json_decode($result,true);
}
При успешном выполнении программа вернет имена удаленных файлов.