Загрузка файла на Диск

Чтобы загрузить файл на Диск, необходимо:

  1. Запросить URL для загрузки.
  2. Загрузить файл по полученному адресу.

Запрос URL для загрузки

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

Формат запроса

Запрос URL для загрузки следует отправлять с помощью метода GET.

https://cloud-api.yandex.net/v1/disk/resources/upload
 ? path=<путь, по которому следует загрузить файл>
 & [overwrite=<признак перезаписи>]
 & [fields=<свойства, которые нужно включить в ответ>]
Query-параметры
path*

Путь, по которому следует загрузить файл. Например, %2Fbar%2Fphoto.png. Максимальная длина имени загружаемого файла — 255 символов; максимальная длина пути — 32760 символов.

Путь в значении параметра следует кодировать в URL-формате.

overwrite

Признак перезаписи файла. Учитывается, если файл загружается в папку, в которой уже есть файл с таким именем.

Допустимые значения:

  • false — не перезаписывать файл, отменить загрузку (используется по умолчанию);

  • true — удалить файл с совпадающим именем и записать загруженный файл.

fields

Список свойств JSON, которые следует включить в ответ. Ключи, не указанные в этом списке, будут отброшены при составлении ответа. Если параметр не указан, ответ возвращается полностью, без сокращений.

Имена ключей следует указывать через запятую, а вложенные ключи разделять точками. Например: name,_embedded.items.path.

Формат ответа

Если запрос был обработан без ошибок, API отвечает кодом 200 OK. В теле ответа, в объекте Link, возвращается сгенерированный URL для загрузки файла. Если в течение 30 минут этот URL не будет запрошен, он перестанет работать, и нужно будет запросить новую ссылку.

Если запрос вызвал ошибку, возвращается подходящий код ответа, а тело ответа содержит описание ошибки.

Пример ответа:

{
  "href": "https://uploader1d.dst.yandex.net:443/upload-target/...",
  "method": "PUT",
  "templated": false
}
Описание элементов ответа
Элемент Описание
href

URL. Может быть шаблонизирован, см. ключ templated.

method

HTTP-метод для запроса URL из ключа href.

templated

Признак URL, который был шаблонизирован согласно RFC 6570. Возможные значения:

  • «true» — URL шаблонизирован: прежде чем отправлять запрос на этот адрес, следует указать нужные значения параметров вместо значений в фигурных скобках.
  • «false» — URL может быть запрошен без изменений.

Загрузка файла на полученный URL

Файл следует отправить с помощью метода PUT на URL для загрузки, в течение 30 минут после получения этого URL (через 30 минут ссылка перестанет работать и ее нужно будет запросить заново). OAuth-токен для загрузки в хранилище не нужен.

Пример URL для загрузки:

https://uploader1d.dst.yandex.net:443/upload-target/20240424T101447.217.utd.52csloukwvq67nab1yc84a3xw-k1d.6625

Формат ответа

Если запрос был обработан без ошибок, API отвечает кодом 201 Created.

Пример HTTP-ответа:

HTTP/1.1 201 Created
Content-Length: 0

Возможные коды ответа при загрузке файла

API отвечает кодом 201 Created, если файл был загружен без ошибок.

Другие возможные коды HTTP-ответа:

  • 202 Accepted — файл принят сервером, но еще не был перенесен непосредственно в Яндекс.Диск.

  • 412 Precondition Failed — при дозагрузке файла был передан неверный диапазон в заголовке Content-Range.

  • 413 Payload Too Large — размер файла превышает 10 ГБ.

  • 500 Internal Server Error или 503 Service Unavailable — ошибка сервера, попробуйте повторить загрузку.

  • 507 Insufficient Storage — для загрузки файла не хватает места на Диске пользователя.