Загрузка файла (PUT)

Загрузить файл на Яндекс Диск можно с помощью метода PUT. Поддерживается закачка сжатых файлов (заголовок Content-Encoding: gzip) и закачка без объявления общего размера файла (Transfer-Encoding: chunked).

Перед загрузкой тела запроса с содержимым файла Диск проверяет, не загрузил ли кто-нибудь еще точно такой же файл:

  • Если файл с тем же размером, суммой MD5 и хэшем SHA-256 уже присутствует в хранилище, сервис возвращает код 201 Created.

    Данные о файле следует передавать в заголовках запроса: размер в заголовке Content-Length, сумму MD5 в заголовке Etag и хэш SHA в заголовке Sha256.

  • Если такого же файла в хранилище еще нет, сервис отвечает кодом 100 Continue, разрешая загрузку содержимого файла (клиент должен корректно обрабатывать этот код ответа). После того, как файл будет успешно передан на сервер, Диск возвращает код 201 Created.

    В начале и в конце загрузки файла проверяется, не выходит ли файл за пределы объема Диска, доступного пользователю. Если места не хватает, сервис возвращает ответ с кодом 507 Insufficient Storage.

Пример: приложение загружает файл otpusk.avi в папку /a/ на Диске пользователя, указывая контрольную сумму и хэш для проверки дубликатов.

PUT /a/otpusk.avi HTTP/1.1
Host: webdav.yandex.ru
Accept: */*
Authorization: OAuth 0c4181a7c2cf4521964a72ff57a34a07
Etag: 1bc29b36f623ba82aaf6724fd3b16718
Sha256: T8A8H6B407D7809569CA9ABCB0082E4F8D5651E46D3CDB762D02D0BF37C9E592
Expect: 100-continue
Content-Type: application/binary
Content-Length: 103134024

<содержимое файла>
Предыдущая