Вложенный файл, тип свойства 'list of attachments' (на примере класса 'abc/mnesia' и свойства 'patts')
Обзор
Позволяет приложить к сущности произвольное количество файлов-вложений с размещением на диске в преднастроенном хранилище, связанным с коллекцией класса.
И в дальнейшем производить операции чтения, замены, удаления вложения.
Каждое свойство типа `list of attachments` формирует в REST-API отдельный endpoint этого типа. Это поле типа `attachment` с установленным признаком `multi`=`true`.
Файл после загрузки методом POST сохраняет имя и расширение, а при загрузке методом PUT приобретает имя и расширение идентичное указанному идентификатору вложения.
Допустимо закачивать одним POST-запросом сразу нескольких файлов в режиме `multipart/form-data`.
Реальный путь к вложениям формируется одинаково вне зависимости от типа хранилища:
* Для категорий - `…/Domain/ClassName/Id12/Id34/Id56/IdRest/PropertyName/FileName`
* Для истории - `…/Domain/ClassName/PartitionFieldDate/Id12/Id34/Id56/IdRest/PropertyName/FileName`
Запросы
HTTP verb | Endpoint | Описание |
---|---|---|
|
|
Получения метаданных по всем файлам вложений, связанных со свойством |
|
|
|
|
|
|
|
|
Заливка файлов вложений с сохранением имен
Загрузка в коллекцию производится с помощью Content-Type: multipart/formdata
.
В запросе может быть один или несколько файлов.
Файлы размещаются под именами, указанными в заголовках Content-Disposition
каждой части.
Если файл с указанным именем уже существует, то он не сохраняется и возвращает ошибку. В зависимости от Content-Type и наличия успешно размещенных файлов в запросе может быть возвращен неудачный HTTP-ответ, либо информация о неудаче в теле HTTP-ответа 200 OK.
Запрос
POST /rest/v1/model/abc/mnesia/6f7d27df-017b-ab81-77e7-7cd30a921f58/patts HTTP/1.1
Content-Type: multipart/form-data; boundary=-----------boundary_69df8120352a996e
-----------boundary_69df8120352a996e
Content-Type: application/octet-stream
Content-Disposition: form-data; name="filename"; filename="app.mp3"
Content-Transfer-Encoding: binary
BINARY BODY OF 'app.mp3'
-----------boundary_69df8120352a996e--
Получения метаданных по всем файлам вложений, связанных со свойством
Скачивание конкретного файла вложения
Запрос
Имя | Тип | Описание |
---|---|---|
|
|
Тип выдачи. По умолчанию
|
GET /rest/v1/model/abc/mnesia/6f7d27df-017b-ab81-77e7-7cd30a921f58/patts/app.mp3 HTTP/1.1
Заливка файла вложения
Производит замену файла.
Загрузка одного файла производится либо с помощью Content-Type: multipart/formdata
,
либо с произвольным Content-Type
не являющимся мультипартом.
Если загрузка происходит с Content-Type: multipart/formdata
,
то будет сохранён только первый файл (первая часть имеющая поле filename в заголовке
Content-Disposition
), а само название файла будет проигнорировано.
Запрос
PUT /rest/v1/model/abc/mnesia/6f7d27df-017b-ab81-77e7-7cd30a921f58/patts/app.mp3 HTTP/1.1
Content-Type: application/octet-stream
BINARY BODY OF 'app.mp3'
PUT /rest/v1/model/abc/mnesia/6f7d27df-017b-ab81-77e7-7cd30a921f58/patts/app.mp3 HTTP/1.1
Content-Type: multipart/form-data; boundary=-----------boundary_69df8120352a996e
-----------boundary_69df8120352a996e
Content-Type: application/octet-stream
Content-Disposition: form-data; name="abcde"; filename="app.mp3"
Content-Transfer-Encoding: binary
BINARY BODY OF 'app.mp3'
-----------boundary_69df8120352a996e--