1. Saby
  2. База знаний
  3. API
  4. API Saby Space
  5. Загрузить файл

Загрузить файл в Saby Space по API

Загрузить файл в Saby Space по API

С помощью API можно загружать файлы в файловое хранилище Saby Space для использования в документообороте.

Метод запроса: POST

Адрес запроса: https://disk.saby.ru/disk/api/v1/{folderId}

Возможные значения folderId:

  • mydocs — Мои документы;
  • commondocs — Общие документы;
  • temp — временный раздел, используется для последующей передачи файла в систему электронного документооборота (ЭДО) или электронной отчетности (ЭЛО). В этом разделе файлы и папки хранятся 24 часа, затем автоматически удаляются;
  • {uuid} — идентификатор пользовательской папки в Saby Space.

Запросы к https://disk.saby.ru/disk/api/v1/ без folderId запрещены.

Процесс загрузки зависит от размера файла.

Менее 75 Мб
Менее 75 Мб
Более 75 Мб
Более 75 Мб

Выполняется HTTP-запросом POST по ссылке на папку, в которой требуется создать файл.

Запрос

Поле

Описание

Заголовки запроса

User-Agent

Название системы интеграции

Content-Type

Тип содержимого файла (MIME) меняется в зависимости от загружаемого типа файла

Content-Disposition

Должен иметь вид:
Content-Disposition:attachment;filename*=UTF-8’’name, где name=URLEncoded (имя файла в кодировке UTF-8)

Content-Length

Размер файла (размер тела запроса в байтах)

X-SBISSessionId
и/или Cookie

Идентификатор сессии, который вернулся в результате аутентификации. Если заголовок или cookie с идентификационными данными не переданы, сервер вернет ошибку «401»

Тело запроса

Бинарные данные файла

Результат

Поле

Описание

Заголовки результата

HTTP

Код ответа HTTP-сервера

Date

Дата создания документа

Content-Type

Тип содержимого ответа

Content-Length

Длина тела ответа

ETag

Хэш файла

Last-Modified

Дата и время последнего изменения файла

X-UNIQ-ID

Идентификатор запроса

Тело результата: json с полями

status

HTTP-код ответа. При успешном выполнении вернется код «201»

href

Ссылка на загруженный файл

relativePath

Относительная ссылка на файл

fileid

Идентификатор файла в Saby Space

versionid

Идентификатор редакции файла в Saby Space

range-md5

Контрольная сумма содержимого

malware

Результат проверки файла антивирусом. Если проверка не готова, вернется null

Примеры

Запрос

Результат

Если размер файла превышает 75 Мб, его необходимо загружать по частям. Загружайте части файла строго по порядку. Если загрузка оборвалась, отправьте POST-запрос, чтобы получить у сервера статус. Сервер ответит, сколько байт уже загружено. Продолжайте загрузку с этого места.

Загрузка включает три этапа:

  1. Подготовка к загрузке — выполняется один раз. Вы резервируете место для файла в хранилище.
  2. Загрузка части файла — выполняется до тех пор, пока не будет загружено все содержимое.
  3. Завершение загрузки — выполняется один раз, чтобы закрыть сессию и подтвердить создание файла.

Ограничения для загрузки файла более 75 Мб:

  • максимальный размер каждой части не более 75 Мб (78643200 байт);
  • минимальный размер каждой части, кроме завершающей — 1 Мб (1048576 байт);
  • размер завершающей части больше 0, но не больше максимального;
  • размер каждой части, кроме завершающей, кратен 256 КБ (262144 байт).

Подготовка к загрузке

Запрос

Зарезервируйте в хранилище место для файла POST-запросом.

Поле

Описание

Заголовки запроса

User-Agent

Название системы интеграции

Content-Type

Content-Type: application/json; charset=utf-8

Content-Disposition

Должен иметь вид:
Content-Disposition:attachment;filename*=UTF-8’’name, где name=URLEncoded (имя файла в кодировке UTF-8)

Content-Length

Размер тела запроса в байтах

X-SBISSessionId и/или Cookie

Идентификатор сессии, который вернулся в результате аутентификации. Если заголовок или cookie с идентификационными данными не переданы, сервер вернет ошибку «401»

X-Upload-Content-Type

Тип содержимого файла (MIME)

X-Upload-Content-Length

Размер всего загружаемого файла в байтах

Тело запроса: json с полями

href — ссылка на папку, в которую загружается файл

Результат

Поле

Описание

Заголовки результата

HTTP

Код ответа HTTP-сервера

Date

Дата создания документа

Content-Type

Тип содержимого ответа

Content-Length

Длина тела ответа

X-UNIQ-ID

Идентификатор запроса

Тело результата: json с полями

status

HTTP-код ответа. При успешном выполнении вернется код «200»

href

Ссылка, которую надо использовать при формировании запросов для добавления частей к файлу

Примеры

Запрос

Результат

Загрузка части файла

Загрузите файл на диск частями с помощью PUT-запросов. Укажите:

  • в заголовке «Content-Length» каждого запроса укажите размер части в байтах;
  • в теле запроса бинарные данные части файла;
  • адрес запроса — значение поля href из ответа на первый POST-запрос и добавьте к нему строку «&part=new».

Запрос

Поле

Описание

Заголовки запроса

User-Agent

Название системы интеграции

Content-Type

Content-Type: application/json; charset=utf-8

Content-Disposition

Должен иметь вид:
Content-Disposition:attachment;filename*=UTF-8’’name, где name=URLEncoded (имя файла в кодировке UTF-8)

Content-Length

Размер части файла (размер тела запроса в байтах)

X-SBISSessionId и/или Cookie

Идентификатор сессии, который вернулся в результате аутентификации. Если заголовок или cookie с идентификационными данными не переданы, сервер вернет ошибку «401»

Тело запроса

Бинарные данные добавляемой части файла

Результат

Поле

Описание

Заголовки результата

HTTP

Код ответа HTTP-сервера

Date

Дата создания части документа

Content-Type

Тип содержимого ответа

Content-Length

Длина тела ответа

X-UNIQ-ID

Идентификатор запроса

Тело результата: json с полями

status

HTTP-код ответа. При успешном выполнении вернется код «200»

md5

MD5-хэш загруженной части файла

size

Размер получаемых данных

Примеры

Запрос

Результат

Завершение загрузки

Для завершения создания файла используйте POST-запрос. Адрес запроса — значение поля «href» из ответа на первый POST-запрос.

Запрос

Поле

Описание

Заголовки запроса

User-Agent

Название системы интеграции

Content-Type

Content-Type: application/json; charset=utf-8

Content-Length

Должен иметь вид:
Content-Length: 0

Content-Length

Должен иметь вид:
Content-Type:application/octet-stream

X-SBISSessionId и/или Cookie

Идентификатор сессии, который вернулся в результате аутентификации. Если заголовок или cookie с идентификационными данными не переданы, сервер вернет ошибку «401»

Тело запроса

Всегда пустое

Результат

Поле

Описание

Заголовки результата

HTTP

Код ответа HTTP-сервера

Date

Дата создания документа

Content-Type

Тип содержимого ответа

Content-Length

Длина тела ответа

ETag

Хэш файла

Last-Modified

Дата и время последнего изменения файла

X-UNIQ-ID

Идентификатор запроса

Тело результата: json с полями

status

HTTP-код ответа. При успешном выполнении вернется код «201»

href

Ссылка на файл. Содержит домен из HTTP-запроса, который создал файл

relativePath

Ссылка на файл без учета домена (относительная ссылка)

fileid

Идентификатор файла в Saby Space

versionid

Идентификатор редакции в Saby Space

range-md5

Хэш MD5 бинарных данных файла

Примеры

Запрос

Результат

Нашли неточность? Выделите текст с ошибкой и нажмите ctrl + enter.
Продолжая пользоваться сайтом, вы даете согласие на обработку персональных данных. Если вы не согласны, покиньте сайт.