Файлы (Files)
Ресурс File — для скачивания загруженных файлов.

Скачать файл

Запрос
Ответ
1
URL: {domain}/api/v1/files/{fileId}
Copied!
Метод: GET
Параметры:
  • fileId: (number) — идентификатор файла
Вернет редирект на ссылку на скачивание контента файла.
Ответ: 302
Заголовок:
1
Location: https://server.with.files.domain/url/to/file?tokenParma=tokenValue
Copied!

Прикрепление файла к записи

Файлы, прикрепленные к записям могут быть прикреплены 2 способами:
  • Прикрепление внешнего файла — файл хранится на внешнем источнике, запись в каталоге содержит файл-ссылку на реальный файл на внешнем источнике.
  • Загрузка файла в хранилище — файл загружается и хранится в файловом хранилище Bpium, к записи в кателоге прикрепляется ссылка на файл в файлом хранилище Bpium.

Прикрепление ссылки на внешней файл

Чтобы прикрепить ссылку на внешний файл к записи каталога, нужно создать/сохранить запись каталога, указав ссылку на файл и его параметры в поле типа «Файл». Пример:
1
{
2
"values": {
3
"16": [{ // поле файл
4
"title": "bpium_logo.png", // название файла
5
"src": "https://..." // ссылка на файл
6
"size": "8513", // размер файла
7
"mimeType": "image/png" // MIME-тип файла
8
}]
9
}
10
}
Copied!
Подробнее по работе с полями записей в статье «Записи (Records)».

Загрузка файла в файловое хранилище Bpium

Загрузка файла и прикрепление к записи ссылки на него происходит в несколько этапов:

1. Получение ключей доступа к хранилищу

Необходимо выполнить POST-запрос к ресурсу файл, для создания файла:
Запрос
Ответ
1
URL: {domain}/api/v1/files/
Copied!
Метод: POST
Параметры:
  • fileId: (number) — идентификатор файла
Параметры запроса (JSON):
1
{
2
"catalogId": "38", // ID каталога с записью, к которой будет прикреплен файл
3
"recordId": "123", // ID записи, к которой будет прикреплен файл. Если для новой записи, то параметр должен отсутствовать
4
"fieldId": "2", // ID поля каталога
5
"name": "favicon16_drugmedia.png", // имя файла
6
"size": 2900, // размер файла
7
"mimeType": "image/png", // MIME-тип файла
8
"typeStorage": "remoteStorage" // обязательный параметр
9
}
Copied!
Ответ: 200
Возвращаемое значение (JSON):
1
{
2
"fileId": 531, // ID созданного файла
3
"uploadUrl": "...", // URL хранилища файлов
4
"redirect": "...",
5
"acl": "private",
6
"fileKey": "3/517227d3-6ccc-4c4e-8c0d-35bec5bc62f8/file.png", // путь к файлу в хранилище
7
"AWSAccessKeyId": "...", // идентификатор доступа
8
"police": "...", // код доступа
9
"signature": "..." // подпись к коду доступа
10
}
Copied!
Ключи доступа действуют на загрузку одного файла в течение ограниченного времени.

2. Загрузка файла в хранилище

Необходимо выполнить POST-запрос к хранилищу файлов:
Запрос
Ответ
1
URL: {uploadUrl из предыдущего запроса}
Copied!
Метод: POST
Параметры запроса:
1
key="fileKey из предыдущего запроса"&
2
acl="private"&
3
AWSAccessKeyId="AWSAccessKeyId из предыдущего запроса"&
4
Policy="police(!!!, не policy) из предыдущего запроса"&
5
Signature="signature из предыдущего запроса"&
6
Content-Type="mimeType файла"&
7
file=бинарное содержимое загружаемого файла
Copied!
Обратите внимание на параметр Content-Type. Он должен обязательно присутствовать в запросе.
Ответ: 204

3. Подтверждение загрузки файла

Необходимо отправить запрос серверу API о том, что файл загружен.
Запрос
Ответ
1
URL: {domain}/api/v1/files/{fileId из ответа 1-го запроса}
Copied!
Метод: PATCH
Параметры запроса (body/JSON):
1
{
2
"fileId": Number, // ID созданного файла
3
"name": String, // имя файла
4
"size": Number, // размер файла
5
"mimeType": String, // MIME-тип файла
6
"url": String // путь к файлу в хранилище
7
}
Copied!
Ответ: 200
Возвращаемое значение (body/JSON):
1
{
2
"id": Number, // ID созданного файла
3
"title": String, // имя файла
4
"size": Number, // размер файла
5
"url": String, // путь к файлу в хранилище
6
"mimeType": String, // MIME-тип файла
7
"metadata": { // Метаданные:
8
"preview": String, // ссылка на предпросмотр файла
9
"thumbnail": String // ссылка на миниатюру файла
10
}
11
}
Copied!

4. Прикрепление файла к записи

После загрузки файла, он появится в системе и файлом хранилище, но не будет связан с записью каталога и её полем анкеты, пока не будет сохранена эта запись. Чтобы сохранить запись, нужно сделать запрос к API Бипиума на сохранение записи:
Пример запроса:
1
{
2
"values": {
3
"16": [{ // поле файл
4
"id": 531 // ID созданного файла из запроса шага 1
5
}]
6
}
7
}
Copied!
Подробнее по работе с полями записей в статье «Записи (Records)».
Last modified 1mo ago