Tous les produits
Search
Centre de documentation

Object Storage Service:CompleteMultipartUpload

Dernière mise à jour :Oct 10, 2026

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

oss:PutObject

Assemble les parties pour former un objet.

oss:PutObjectTagging

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.

  • Si x-oss-forbid-overwrite n'est pas spécifié ou défini sur false, les objets existants peuvent être écrasés par des objets portant le même nom.

  • Si x-oss-forbid-overwrite est défini sur true, les objets existants ne peuvent pas être écrasés par des objets portant le même nom.

Remarque
  • L'en-tête de requête x-oss-forbid-overwrite est ignoré si le versioning est activé ou suspendu pour le bucket. Dans ce cas, l'opération CompleteMultipartUpload écrase l'objet portant le même nom.

  • Si vous spécifiez l'en-tête de requête x-oss-forbid-overwrite, les performances QPS (requêtes par seconde) d'OSS peuvent se dégrader. Si vous souhaitez configurer l'en-tête x-oss-forbid-overwrite dans un grand nombre de requêtes (plus de 1 000 QPS), soumettez un ticket.

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.

  • Si x-oss-complete-all est défini sur yes dans la requête, OSS liste toutes les parties chargées avec l'ID de chargement actuel, les trie par numéro de partie, puis exécute l'opération CompleteMultipartUpload. Lors de l'exécution de l'opération CompleteMultipartUpload, OSS ne détecte pas les parties qui n'ont pas été chargées ou qui sont en cours de chargement. Avant d'appeler l'opération CompleteMultipartUpload, assurez-vous que toutes les parties ont bien été chargées.

  • Si x-oss-complete-all est spécifié dans la requête, le corps de la requête ne doit pas être spécifié. Sinon, une erreur se produit.

  • Si x-oss-complete-all est spécifié dans la requête, le format de la réponse reste inchangé.

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 :

  • La requête contient l'en-tête x-oss-forbid-overwrite=true et le bucket contient un objet portant le même nom que l'objet que vous souhaitez charger.

  • L'objet sur lequel vous souhaitez effectuer l'opération CompleteMultipartUpload est un répertoire au sein d'un bucket pour lequel la fonctionnalité d'espace de noms hiérarchique est activée.