1. Saby
  2. База знаний
  3. API
  4. API Saby Space
  5. Обновить файл

Обновить файл в Saby Space по API

Обновить файл в Saby Space по API

С помощью API можно обновить файлы в файловом хранилище Saby Space.

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

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

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

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

Выполняется HTTP-запросом PUT по ссылке на обновляемый файл.

Запрос

Поле

Описание

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

Content-Type

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

User-Agent

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

Content-Disposition

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

Content-Length

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

X-SBISSessionId

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

X-Object-Filname

Заголовок указывается, если одновременно с изменением содержимого требуется изменить имя файла.
Заголовок должен иметь вид:
X-Object-Filname: name, где name=URLEncoded(имя файла в кодировке UTF-8)

Тело запроса

Новые бинарные данные файла

Результат

При успешном выполнении запроса вернется JSON со ссылкой на обновленный файл. Иначе — JSON с описанием ошибки.

Поле

Описание

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

HTTP

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

Date

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

Content-Type

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

Content-Length

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

ETag

Хэш файла

Last-Modified

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

X-UNIQ-ID

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

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

status

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

href

Ссылка на файл

relativePath

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

fileid

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

versionid

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

range-md5

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

malware

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

Примеры

Запрос

Результат

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

Обновление включает три этапа:

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

Ограничения:

  • максимальный размер каждой части не более 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 с идентификационными данными не переданы, сервер вернет ошибку «401»

X-Object-Filname

Заголовок указывается, если одновременно с изменением содержимого требуется изменить имя файла.
Заголовок должен иметь вид:
X-Object-Filname: name, где name=URLEncoded(имя файла в кодировке UTF-8)

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/octet-stream

Content-Length

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

X-SBISSessionId

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

Тело запроса

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

Результат

Поле

Описание

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

HTTP

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

Date

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

Content-Type

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

Content-Length

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

ETag

Хэш добавленой части файла

X-UNIQ-ID

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

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

status

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

md5

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

size

Размер добавленной части файла

Примеры

Запрос

Результат

Завершение обновления

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

Запрос

Поле

Описание

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

User-Agent

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

Content-Type

Content-Type:application/octet-stream

Content-Length

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

X-SBISSessionId

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

Тело запроса

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

Результат

Поле

Описание

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

HTTP

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

Date

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

Content-Type

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

Content-Length

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

ETag

Хэш файла

Last-Modified

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

X-UNIQ-ID

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

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

status

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

href

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

relativePath

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

fileid

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

versionid

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

range-md5

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

Примеры

Запрос

Результат

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