Метод completeUpload
Запрос завершает составную загрузку.
При получении запроса Object Storage:
- Собирает конечный объект из полученных в процессе загрузки частей в порядке их номеров
- Удаляет идентификатор загрузки, так что все последующие запросы с идентификатором загрузки вернут ошибку
NoSuchUpload.
При завершении загрузки клиент должен предоставить список частей, которые он отправлял. Описание каждой части должно содержать ETag, который клиент получает в ответ на каждую загруженную часть. Смотрите раздел Метод uploadPart.
В зависимости от размера объекта и количества частей операция может занять несколько минут.
Если запрос завершился с ошибкой, то клиентское приложение должно быть готово повторить запрос.
Подробнее о подготовке к работе с API и общем виде запроса см. в разделе Как пользоваться S3 API.
Запрос
POST /{bucket}/{key}?uploadId=UploadId HTTP/2
Path параметры
| Параметр | Описание |
|---|---|
bucket |
Имя бакета. |
key |
Ключ объекта. |
Query параметры
| Параметр | Описание |
|---|---|
uploadId |
Идентификатор составной загрузки, который Object Storage вернул при инициализации. |
Заголовки
Используйте в запросе необходимые общие заголовки.
| Заголовок | Описание |
|---|---|
If-Match |
Определяет условие выполнения операции. Операция будет выполнена, только если текущая версия объекта по указанному ключу существует, и ее ETag совпадает со значением в заголовке If-Match. |
If-None-Match |
Определяет условие выполнения операции. Операция будет выполнена, только если в бакете нет объекта с таким же ключом. В значении заголовка укажите *. |
Схема данных
Список частей составной загрузки передается в виде XML-файла следующего формата:
<CompleteMultipartUpload>
<Part>
<PartNumber>PartNumber</PartNumber>
<ETag>ETag</ETag>
</Part>
...
</CompleteMultipartUpload>
| Тег | Описание |
|---|---|
CompleteMultipartUpload |
Данные запроса. Путь: /CompleteMultipartUpload. |
Part |
Данные о загруженной части объекта. Путь: /CompleteMultipartUpload/Part. |
PartNumber |
Номер части. Уникальный идентификатор, определяющий положение части среди других частей в загрузке. Путь: /CompleteMultipartUpload/Part/PartNumber. |
ETag |
Идентификатор, который клиент получил от Object Storage в ответ на загрузку части. Путь: /CompleteMultipartUpload/Part/ETag. |
Ответ
Заголовки
Ответ может содержать только общие заголовки.
Коды ответов
Перечень возможных ответов смотрите в разделе Ответы.
Дополнительно, Object Storage может вернуть ошибки, описанные в таблице ниже.
| Ошибка | Описание | HTTP-код |
|---|---|---|
NoSuchUpload |
Указанная загрузка не существует. Возможно указан неверный идентификатор загрузки или загрузка была завершена или удалена. | 404 Not Found |
InvalidPart |
Некоторые из указанных частей не найдены. Возможные причины: - Части не загружены. - Переданный ETag не совпадает с сохраненным. |
400 Bad Request |
InvalidPartOrder |
Список частей передан не в упорядоченном по возрастанию виде. Список должен быть отсортирован по возрастанию по номерам частей. |
400 Bad Request |
Успешный ответ содержит дополнительные данные в формате XML, схема которого описана ниже.
Схема данных
<CompleteMultipartUploadResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Location>http://Example-Bucket.storage.yandexcloud.net/Example-Object</Location>
<Bucket>Example-Bucket</Bucket>
<Key>Example-Object</Key>
<ETag>"3858f62230ac3c915f300c664312c11f-9"</ETag>
</CompleteMultipartUploadResult>
| Тег | Описание |
|---|---|
CompleteMultipartUploadResult |
Данные ответа. Путь: /CompleteMultipartUploadResult. |
Location |
URI созданного в результате загрузки объекта. Путь: /CompleteMultipartUploadResult/Location. |
Bucket |
Имя бакета, в котором находится объект. Путь: /CompleteMultipartUploadResult/Bucket. |
Key |
Ключ созданного объекта. Путь: /CompleteMultipartUploadResult/Key. |
ETag |
Хэш объекта. ETag может быть, а может и не быть MD5. Путь: /CompleteMultipartUploadResult/ETag. |