ShelfUpload

Имя ресурса: /ShelfUpload

HTTP метод: POST

Параметры строки запроса:

  • nameOnShelf: имя файла на «полке документов»
  • partIndex: номер загружаемого фрагмента файла (фрагменты индексируются, начиная с 0);
  • isLastPart: признак того, что загружается последний фрагмент файла: выставляется в 1 для последнего фрагмента, может отсутствовать или быть выставленным в 0 для всех остальных фрагментов;

В запросе должен присутствовать HTTP-заголовок Authorization с необходимыми данными для авторизации.

Метод ShelfUpload позволяет выполнить загрузку фрагмента документа на сервер «полки документов». Предполагается, что бинарные данные документа будут разделены на блоки некоторого размера, затем каждый такой блок будет загружен на «полку документов» с помощью отдельного вызова ShelfUpload.

Вызов ShelfUpload с параметром isLastPart, выставленным в 1, сигнализирует сервису «полки документов», что файл (по мнению клиента) загружен полностью. В ответ сервис сообщает, действительно ли все фрагменты файла были переданы успешно, или требуется повторная передача некоторых фрагментов. Если файл загружен полностью, то он становится доступен для чтения с «полки документов», и на него можно ссылаться в структуре SignedContent.

Примечание

Все пространство логических имен файлов на «полке документов» поделено на локальное для пользователя и публичное.

По умолчанию, если вызвать метод ShelfUpload и указать параметр nameOnShelf=xyz, то физическое имя файла будет public/xyz, т.е. публичное. К таким файлам можно получить доступ через ShelfDownload, указав nameOnShelf=xyz.

Если вызвать ShelfUpload и указать параметр nameOnShelf=__userId__/xyz, где __userId__ - это строковый литерал, то физическое имя файла будет user_private_files/{userId}/xyz. {userId} возьмется из текущего авторизационного токена. К таким файлам можно получить доступ через ShelfDownload, указав nameOnShelf=__userId__/xyz.

Методы PostMessage и PostMessagePatch трактуют переданное имя файла как локальное для пользователя, поэтому дописывают вначале префикс user_private_files/{userId}

Если же в процессе загрузки были ошибки, и отдельные фрагменты файла отсутствуют, то вызов ShelfUpload с параметром isLastPart, выставленным в 1, вернет в теле ответа в качестве результата список номеров отсутствующих фрагментов файла (их надо передать повторно) в формате JSON.

Для вызова этого метода текущий пользователь должен быть авторизован в Диадоке, в противном случае возвращается код ошибки 403 (Forbidden).

Возможные HTTP-коды возврата:

  • 200 (OK) - операция успешно завершена;
  • 400 (Bad Request) - данные в запросе имеют неверный формат или отсутствуют обязательные параметры;
  • 403 (Forbidden) - авторизационный токен отсутствует, истек или имеет неверный формат;
  • 500 (Internal server error) - при обработке запроса возникла непредвиденная ошибка.