Полка документов
Полка документов — временное хранилище данных в Диадоке. Полка используется для удобства передачи и получения данных методами API.
В качестве данных на полке документов может храниться содержимое документов, бинарное представление электронной подписи, архив с результатом выполнения метода GenerateDocumentZip и другие бинарные данные. Условно все эти данные в контексте полки будем называть документами.
Преимущества полки
Некоторые методы API требуют передавать в них содержимое документов. Но содержимое может быть большим, что вызовет проблемы при его загрузке одной командой. Такая команда будет выполняться долго и даже может завершиться неуспехом.
Для решения этой проблемы используется полка документов. Она позволяет загрузить содержимое документа в хранилище небольшими частями, а после передавать в методы API ссылку на документ на полке — имя документа. Таким образом, в методы можно передавать не содержимое документа, а только его имя на полке. Это ускоряет работу метода и повышает его надежность.
Один и тот же документ, хранящийся на полке, можно использовать в разных методах. Для этого не придется в каждый метод загружать содержимое документа, достаточно будет указать его имя на полке.
Работа с полкой документов
Полка предоставляет возможность загружать, хранить и скачивать содержимое документов.
Для загрузки документа на полку в API реализованы следующие методы:
Для загрузки на полку документов небольшого размера целиком используется метод ShelfUpload (V2): метод загрузит документ на полку, сгенерирует его имя и вернет это имя в ответе. Подробннее об ограничениях размера — на странице метода.
Для загрузки на полку документов большого размера по частям используются методы ShelfUploadPartInit и ShelfUploadPart:
С помощью метода ShelfUploadPartInit загрузите первый фрагмент документа. Метод сгенерирует имя файла на полке и вернет его в ответе.
Методом ShelfUploadPart по очереди догрузите все остальные фрагменты документа на полку, указав его имя.
Последний фрагмент документа загрузите с параметром
isLastPart = true
: это сообщит серверу, что вы загрузили все части документа.Подробннее об ограничениях размера фрагментов и документа — на страницах метода.
Если документ загружен полностью, то он становится доступным для чтения с полки документов:
его имя можно указать в поле
NameOfShelf
структур SignedContent и UnsignedContent,документ можно скачать с полки методом ShelfDownload (V2).
Полка является приоритетным методом передачи данных в методы API. Уже при размере содержимого документа от 500 KB мы рекомендуем использовать полку, а не передавать его в методы напрямую.
Пространства имен полки
Предупреждение
Эта информация относится к устаревшим версиям методов ShelfUpload и ShelfDownload.
Обращение к документам на полке осуществляется с помощью имени документа. Имя присваивается документу при вызове метода ShelfUpload. Впоследствии это имя используется в других методах API.
Пространство имен документов на полке делится на локальное и публичное. Доступ к локальному пространству есть только у текущего пользователя, к публичному — у любого пользователя.
По умолчанию при загрузке на полку имя документа будет публичным. То есть если вызвать метод ShelfUpload
с параметром nameOnShelf = filename
, то имя загруженного документа будет публичным: public/filename
.
Чтобы загрузить документ с локальным именем, при вызове метода ShelfUpload
укажите в качестве параметра nameOfShelf
значение __userId__/filename
. Строка __userId__
в этом случае сообщает сервису, что текущий пользователь загружает данные в свое локальное пространство; ее не нужно заменять каким-либо значением. Документ будет загружен на полку с именем {userId}/filename
, значение {userId}
будет взято из текущего авторизационного токена. Доступ к таким файлам можно получить с помощью метода ShelfDownload
, указав параметр nameOnShelf = __userId__/filename
.
Методы PostMessage (V3), PostMessagePatch (V3) и PostMessagePatch (V4) всегда трактуют переданное имя документа как локальное, поэтому в этих методах имя файла нужно указывать без префикса userId
.
Ограничения
Нельзя загрузить на полку содержимое документа размером больше 400 MB.
Загруженный документ хранится на полке 7 дней, после чего автоматически удаляется.
См. также
- Методы для работы с полкой документов:
ShelfDownload (V2) — загружает содержимое документа с полки документов
ShelfUpload (V2) — загружает содержимое документа на полку документов целиком
ShelfUploadPart — загружает фрагмент содержимого документа на полку документов, если первая его часть уже была загружена методом ShelfUploadPartInit
ShelfUploadPartInit — загружает первый фрагмент документа на полку документов