Finalise le chargement multipartie d'un objet une fois toutes ses parties envoyées.
Notes
Lors de l'appel à l'opération CompleteMultipartUpload, fournissez la liste complète de toutes les parties valides, en incluant le numéro de partie et l'ETag (entity tag) de chacune. Après réception de cette liste, Object Storage Service (OSS) vérifie successivement la validité de chaque partie. Une fois toutes les parties validées, OSS les assemble pour former un objet complet.
-
Confirmez la taille de chaque partie
Lors de l'appel à l'opération CompleteMultipartUpload, OSS vérifie que chaque partie, sauf la dernière, a une taille supérieure ou égale à 100 Ko, et contrôle le numéro de partie ainsi que l'ETag fournis dans la liste. Par conséquent, lors du chargement d'une partie, le client doit enregistrer non seulement son numéro, mais aussi la valeur ETag renvoyée par le serveur.
-
Gérez les requêtes
Le traitement d'une requête CompleteMultipartUpload par OSS peut prendre un certain temps. Si la connexion entre le client et OSS est interrompue pendant cette période, OSS poursuit le traitement de la requête.
-
PartNumber
OSS valide la valeur de PartNumber lors de l'appel à l'opération CompleteMultipartUpload.
La valeur de PartNumber doit être comprise entre 1 et 10 000. Les numéros de partie listés dans la requête n'ont pas besoin d'être consécutifs, mais doivent être triés par ordre croissant. Par exemple, si le numéro de la première partie est 1, celui de la deuxième peut être 5.
-
UploadId
Un même objet peut faire l'objet de plusieurs tâches de chargement, chacune disposant d'un ID de chargement indépendant. Lorsqu'une tâche est achevée, son ID de chargement devient invalide, sans affecter les IDs des autres tâches en cours.
-
x-oss-server-side-encryption
Si l'en-tête x-oss-server-side-encryption est spécifié dans une requête InitiateMultipartUpload, il est également présent dans la réponse à la requête CompleteMultipartUpload. La valeur de cet en-tête dans la réponse indique la méthode de chiffrement utilisée pour l'objet sur le serveur OSS.
Versioning
Vous pouvez appeler l'opération CompleteMultipartUpload pour finaliser le chargement multipartie d'un objet lorsque le versioning est activé pour le bucket de destination. Dans ce cas, OSS génère un ID de version unique pour l'objet et le renvoie dans l'en-tête x-oss-version-id de la réponse.
Permissions
Par défaut, un compte Alibaba Cloud dispose de toutes les autorisations. Les utilisateurs RAM ou les rôles RAM associés à un compte Alibaba Cloud ne disposent d'aucune autorisation par défaut. Le propriétaire du compte ou l'administrateur doit accorder les autorisations nécessaires via des stratégies RAM ou une Bucket Policy.
|
API |
Action |
Description |
|
CompleteMultipartUpload |
|
Assemble les parties pour former un objet. |
|
|
Cette autorisation est requise lors de l'assemblage des parties si des tags d'objet sont spécifiés via x-oss-tagging. |
Request syntax
POST /ObjectName?uploadId=UploadId HTTP/1.1
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
Date: GMT Date
Content-Length: Size
Authorization: Signature
<CompleteMultipartUpload>
<Part>
<PartNumber>PartNumber</PartNumber>
<ETag>ETag</ETag>
</Part>
...
</CompleteMultipartUpload>
Request parameters
Vous pouvez configurer le paramètre encoding-type dans une requête CompleteMultipartUpload. OSS utilise le type d'encodage spécifié pour encoder le nom de l'objet dans la réponse.
Parameter | Type | Description |
encoding-type | String | Type d'encodage du nom de l'objet dans la réponse. Seul l'encodage URL est pris en charge. Le nom de l'objet peut contenir des caractères encodés en UTF-8. Toutefois, la norme XML 1.0 ne permet pas d'analyser les caractères de contrôle, tels que ceux dont la valeur ASCII est comprise entre 0 et 10. Vous pouvez configurer ce paramètre pour encoder le nom de l'objet dans la réponse. Par défaut, cet en-tête est vide. Valeur valide : url. |
Request headers
Header | Type | Required | Description |
x-oss-forbid-overwrite | String | No | Indique si l'objet portant le même nom est écrasé lors de l'appel à l'opération CompleteMultipartUpload.
Remarque
|
x-oss-complete-all | String | No | Indique s'il faut lister toutes les parties chargées avec l'ID de chargement actuel. Valeur valide : yes.
|
Pour plus d'informations sur les en-têtes de requête communs inclus dans les requêtes CompleteMultipartUpload, tels que Host et Date, consultez En-têtes HTTP communs.
Request elements
Element | Type | Description |
CompleteMultipartUpload | Container | Conteneur stockant le contenu de la requête CompleteMultipartUpload. Nœuds enfants : Part. Nœuds parents : aucun. |
ETag | String | Valeurs ETag renvoyées par OSS après le chargement des parties. Nœuds parents : Part. |
Part | Container | Conteneur stockant les parties chargées. Nœuds enfants : ETag et PartNumber. Nœuds parents : CompleteMultipartUpload. |
PartNumber | Integer | Numéro de la partie. Nœuds parents : Part. |
Response elements
Element | Type | Description |
Bucket | String | Nom du bucket contenant l'objet que vous souhaitez restaurer. Nœuds parents : CompleteMultipartUploadResult. |
CompleteMultipartUploadResult | Container | Conteneur stockant les résultats de la requête CompleteMultipartUpload. Nœuds enfants : Bucket, Key, ETag et Location. Nœuds parents : aucun. |
ETag | String | ETag généré lors de la création d'un objet. Les ETags servent à identifier le contenu des objets. Si un objet est créé via l'opération CompleteMultipartUpload, la valeur ETag n'est pas le hachage MD5 du contenu de l'objet, mais une valeur unique calculée selon une règle spécifique. Remarque L'ETag d'un objet permet de vérifier si son contenu a été modifié. Toutefois, nous recommandons d'utiliser le hachage MD5 de l'objet plutôt que sa valeur ETag pour vérifier l'intégrité des données. Nœuds parents : CompleteMultipartUploadResult. |
Location | String | URL permettant d'accéder à l'objet chargé. Nœuds parents : CompleteMultipartUploadResult. |
Key | String | Nom de l'objet chargé. Nœuds parents : CompleteMultipartUploadResult. |
EncodingType | String | Type d'encodage du nom de l'objet dans la réponse. Si ce paramètre est spécifié dans la requête, le nom de l'objet est encodé dans la réponse. Nœuds parents : Container. |
Examples
-
Finalisez le chargement multipartie d'un objet dans un bucket sans versioning
Exemples de requêtes
POST /multipart.data?uploadId=0004B9B2D2F7815C432C9057C031****&encoding-type=url HTTP/1.1 Host: oss-example.oss-cn-hangzhou.aliyuncs.com Content-Length: 1056 Date: Fri, 24 Feb 2012 10:19:18 GMT Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,AdditionalHeaders=content-length,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e <CompleteMultipartUpload> <Part> <PartNumber>1</PartNumber> <ETag>"3349DC700140D7F86A0784842780****"</ETag> </Part> <Part> <PartNumber>5</PartNumber> <ETag>"8EFDA8BE206636A695359836FE0A****"</ETag> </Part> <Part> <PartNumber>8</PartNumber> <ETag>"8C315065167132444177411FDA14****"</ETag> </Part> </CompleteMultipartUpload>Exemples de réponses réussies
HTTP/1.1 200 OK Server: AliyunOSS Content-Length: 329 Content-Type: Application/xml Connection: keep-alive x-oss-request-id: 594f0751-3b1e-168f-4501-4ac71d21**** Date: Fri, 24 Feb 2012 10:19:18 GMT <?xml version="1.0" encoding="UTF-8"?> <CompleteMultipartUploadResult xmlns="http://doc.oss-cn-hangzhou.aliyuncs.com"> <EncodingType>url</EncodingType> <Location>http://oss-example.oss-cn-hangzhou.aliyuncs.com /multipart.data</Location> <Bucket>oss-example</Bucket> <Key>multipart.data</Key> <ETag>"B864DB6A936D376F9F8D3ED3BBE540****"</ETag> </CompleteMultipartUploadResult> -
Finalisez le chargement multipartie d'un objet dans un bucket avec versioning
Exemples de requêtes
POST /multipart.data?uploadId=63C06A5CFF6F4AE4A6BB3AD7F01C**** HTTP/1.1 Host: oss-example.oss-cn-hangzhou.aliyuncs.com Content-Length: 223 Date: Tue, 09 Apr 2019 07:01:56 GMT Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,AdditionalHeaders=content-length,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e <CompleteMultipartUpload> <Part> <PartNumber>1</PartNumber> <ETag>"25A9F4ABFCC05743DF6E2C886C56****"</ETag> </Part> <Part> <PartNumber>5</PartNumber> <ETag>"25A9F4ABFCC05743DF6E2C886C56****"</ETag> </Part> </CompleteMultipartUpload>Exemples de réponses réussies
HTTP/1.1 200 OK Server: AliyunOSS Content-Length: 314 Content-Type: Application/xml Connection: keep-alive x-oss-version-id: CAEQMxiBgID6v86D0BYiIDc3ZDI0YTBjZGQzYjQ2Mjk4OWVjYWNiMDljYzhlN**** x-oss-request-id: 5CAC4364B7AEADE017000662 Date: Tue, 09 Apr 2019 07:01:56 GMT <?xml version="1.0" encoding="UTF-8"?> <CompleteMultipartUploadResult> <Location>http://oss-example.oss-cn-hangzhou.aliyuncs.com/multipart.data</Location> <Bucket>oss-example</Bucket> <Key>multipart.data</Key> <ETag>"097DE458AD02B5F89F9D0530231876****"</ETag> </CompleteMultipartUploadResult>
OSS SDKs
Utilisez les SDK OSS pour les langages de programmation suivants afin d'appeler l'opération CompleteMultipartUpload :
ossutil
Pour obtenir des informations sur la commande ossutil correspondant à l'opération CompleteMultipartUpload, consultez complete-multipart-upload.
Error codes
Error code | HTTP status code | Description |
InvalidDigest | 400 | La valeur Content-MD5 de la requête diffère du hachage MD5 calculé par OSS. Pour prévenir les erreurs lors de la transmission des données, vous pouvez inclure la valeur Content-MD5 dans la requête. OSS calcule le hachage MD5 des données chargées et le compare à la valeur Content-MD5 de la requête. |
FileAlreadyExists | 409 | Causes possibles :
|