Файлы, прикрепленные к записям могут быть прикреплены 2 способами:
Прикрепление внешнего файла — файл хранится на внешнем источнике, запись в каталоге содержит файл-ссылку на реальный файл на внешнем источнике.
Загрузка файла в хранилище — файл загружается и хранится в файловом хранилище Bpium, к записи в каталоге прикрепляется ссылка на файл в файлом хранилище Bpium.
Прикрепление ссылки на внешней файл
Чтобы прикрепить ссылку на внешний файл к записи каталога, нужно создать/сохранить запись каталога, указав ссылку на файл и его параметры в поле типа «Файл». Пример:
{
"values": {
"16": [{ // поле файл
"title": "bpium_logo.png", // название файла
"src": "https://..." // ссылка на файл
"size": "8513", // размер файла
"mimeType": "image/png" // MIME-тип файла
}]
}
}
Подробнее по работе с полями записей в статье «Записи (Records)».
Загрузка файла в файловое хранилище Bpium
Загрузка файла и прикрепление к записи ссылки на него происходит в несколько этапов:
1. Получение ключей доступа к хранилищу
Необходимо выполнить POST-запрос к ресурсу файл, для создания файла:
URL: {domain}/api/v1/files/
Метод: POST
Параметры:
fileId: (number) — идентификатор файла
Параметры запроса (JSON):
{
"catalogId": "38", // ID каталога с записью, к которой будет прикреплен файл
"recordId": "123", // ID записи, к которой будет прикреплен файл. Если для новой записи, то параметр должен отсутствовать
"fieldId": "2", // ID поля каталога
"name": "favicon16_drugmedia.png", // имя файла
"size": 2900, // размер файла
"mimeType": "image/png", // MIME-тип файла
"typeStorage": "remoteStorage" // обязательный параметр
}
Ответ: 200
Возвращаемое значение (JSON):
{
"fileId": 531, // ID созданного файла
"uploadUrl": "...", // URL хранилища файлов
"redirect": "...",
"acl": "private",
"fileKey": "3/517227d3-6ccc-4c4e-8c0d-35bec5bc62f8/file.png", // путь к файлу в хранилище
"AWSAccessKeyId": "...", // идентификатор доступа
"police": "...", // код доступа
"signature": "..." // подпись к коду доступа
}
Ключи доступа действуют на загрузку одного файла в течение ограниченного времени.
2. Загрузка файла в хранилище
Необходимо выполнить POST-запрос к хранилищу файлов:
URL: {uploadUrl из предыдущего запроса}
Метод: POST
Параметры запроса:
key="fileKey из предыдущего запроса"&
acl="private"&
AWSAccessKeyId="AWSAccessKeyId из предыдущего запроса"&
Policy="police(!!!, не policy) из предыдущего запроса"&
Signature="signature из предыдущего запроса"&
Content-Type="mimeType файла"&
file=бинарное содержимое загружаемого файла
Обратите внимание на параметр Content-Type: multipart/form-data. Он должен обязательно присутствовать в запросе.
Ответ: 204
3. Подтверждение загрузки файла
Необходимо отправить запрос серверу API о том, что файл загружен.
URL: {domain}/api/v1/files/{fileId из ответа 1-го запроса}
Метод: PATCH
Параметры запроса (body/JSON):
{
"fileId": Number, // ID созданного файла
"name": String, // имя файла
"size": Number, // размер файла
"mimeType": String, // MIME-тип файла
"url": String // путь к файлу в хранилище
}
Ответ: 200
Возвращаемое значение (body/JSON):
{
"id": Number, // ID созданного файла
"title": String, // имя файла
"size": Number, // размер файла
"url": String, // путь к файлу в хранилище
"mimeType": String, // MIME-тип файла
"metadata": { // Метаданные:
"preview": String, // ссылка на предпросмотр файла
"thumbnail": String // ссылка на миниатюру файла
}
}
4. Прикрепление файла к записи
После загрузки файла, он появится в системе и файлом хранилище, но не будет связан с записью каталога и её полем анкеты, пока не будет сохранена эта запись. Чтобы сохранить запись, нужно сделать запрос к API Бипиума на сохранение записи:
Пример запроса:
{
"values": {
"16": [{ // поле файл
"id": 531 // ID созданного файла из запроса шага 1
}]
}
}
Подробнее по работе с полями записей в статье «Записи (Records)».