Tous les produits
Search
Centre de documentation

Object Storage Service:AppendObject

Dernière mise à jour :Aug 08, 2026

Télécharge un objet par ajout de données. Les objets créés via l'opération AppendObject sont de type Appendable (ajoutable), tandis que ceux téléchargés via PutObject sont de type Normal.

Versioning

Lorsque le versioning est activé ou suspendu pour un bucket, tenez compte des comportements suivants pour les objets de type Appendable :

  • Vous ne pouvez ajouter des données qu'à la version actuelle d'un objet Appendable. OSS ne crée pas de versions précédentes pour cet objet.

    Une opération PutObject ou DeleteObject sur la version actuelle convertit l'objet Appendable en version précédente. L'objet ne peut plus faire l'objet d'ajouts.

  • L'opération AppendObject n'est pas prise en charge sur des objets non ajoutables, tels que les objets de type Normal ou les marqueurs de suppression.

  • Une nouvelle version Appendable peut être créée uniquement si l'objet n'existe pas ou si sa dernière version est un marqueur de suppression. Définissez position sur 0.

Limits

  • La taille maximale d'un objet Appendable est de 5 Go.

  • Vous ne pouvez pas utiliser l'opération AppendObject sur des objets protégés par une politique de conservation.

  • Les objets Appendable ne prennent pas en charge le chiffrement côté serveur avec un ID de clé CMK via KMS.

  • Les performances de téléchargement des objets Appendable sont nettement inférieures à celles des objets de type Normal ou Multipart. Évaluez si cela répond à vos besoins.

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 compte Alibaba Cloud ou l'administrateur du compte doit accorder les autorisations d'exploitation via des stratégies RAM ou une Bucket Policy.

API

Action

Description

AppendObject

oss:PutObject

Appelez cette opération pour télécharger un objet en l'ajoutant à un objet existant.

oss:PutObjectTagging

Lors du téléchargement d'un objet par ajout à un objet existant, si vous spécifiez des tags d'objet via x-oss-tagging, cette autorisation est requise.

Request syntax

POST /ObjectName?append&position=Position HTTP/1.1
Content-Length: ContentLength
Content-Type: ContentType
Host: BucketName.oss.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue

Request headers

Name

Type

Required

Example

Description

Cache-control

string

No

no-cache

Le comportement de mise en cache de la page web pour l'objet. Défini dans RFC2616.

Valeur par défaut : none

Content-Disposition

string

No

attachment;filename=oss_download.jpg

Le nom de l'objet lors du téléchargement. Défini dans RFC2616.

Valeur par défaut : none

Content-MD5

string

No

ohhnqLBJFiKkPSBO1eNaUA==

Un hachage MD5 encodé en Base64 utilisé pour vérifier l'intégrité du corps du message.

Calculez le hachage MD5 du corps du message (en excluant les en-têtes) pour produire une valeur de 128 bits, puis encodez-la en Base64.

Valeur par défaut : none

Contraintes : aucune

Expires

string

No

Wed, 08 Jul 2015 16:57:01 GMT

La date d'expiration. Définie dans RFC2616.

Valeur par défaut : none

x-oss-server-side-encryption

string

No

AES256

La méthode de chiffrement côté serveur.

Valeurs valides :

  • AES256 : utilise des clés entièrement gérées par OSS pour le chiffrement et le déchiffrement (SSE-OSS).

  • KMS : utilise des clés gérées par KMS pour le chiffrement et le déchiffrement.

x-oss-object-acl

string

No

private

La liste de contrôle d'accès (ACL) de l'objet.

Valeurs valides :

  • default (par défaut) : l'objet hérite de l'ACL du bucket.

  • private : seul le propriétaire et les utilisateurs autorisés disposent des autorisations de lecture et d'écriture sur l'objet. Les autres utilisateurs ne peuvent pas accéder à l'objet.

  • public-read : seul le propriétaire et les utilisateurs autorisés peuvent lire et écrire l'objet. Les autres utilisateurs ont un accès en lecture seule. À utiliser avec prudence.

  • public-read-write : tous les utilisateurs ont un accès en lecture et en écriture. À utiliser avec prudence.

Les autorisations d'accès sont décrites dans la section ACL d'objet.

x-oss-storage-class

string

No

Standard

La classe de stockage de l'objet.

Lorsqu'elle est spécifiée, l'objet est stocké dans cette classe, indépendamment de la classe de stockage du bucket. Par exemple, définir x-oss-storage-class sur Standard dans un bucket IA stocke l'objet comme Standard.

Valeurs valides :

  • Standard : Standard

  • IA : Infrequent Access

  • Archive : Archive Storage

Plus de détails sont disponibles dans la section Classes de stockage.

Important
  • Cet en-tête de requête prend effet uniquement lors de la première opération d'ajout. Il ne s'applique pas aux opérations d'ajout suivantes.

  • Les objets de type Appendable ne peuvent en aucun cas être convertis vers les classes de stockage Cold Archive ou Deep Cold Archive.

x-oss-meta-*

string

No

x-oss-meta-location

En-têtes de métadonnées personnalisées. S'applique uniquement à la première opération d'ajout. Les paramètres préfixés par x-oss-meta-* sont stockés en tant que métadonnées d'objet.

Limite de taille : le total des métadonnées ne peut pas dépasser 8 Ko.

Règles de dénomination : seuls les tirets (-), les chiffres et les lettres minuscules (a-z) sont autorisés. Les lettres majuscules sont converties en minuscules. Les underscores (_) ne sont pas pris en charge.

x-oss-tagging

string

No

TagA=A

Tags d'objet au format clé-valeur. Plusieurs tags sont séparés par des esperluettes, par exemple TagA=A&TagB=B.

Important
  • Cet en-tête de requête prend effet uniquement lors de la première opération d'ajout. Il ne s'applique pas aux opérations d'ajout suivantes.

  • La clé et la valeur doivent être encodées en URL. La clé est obligatoire, mais la valeur est facultative. Par exemple, vous pouvez définir les tags d'objet sur TagA&TagB=B.

Cette opération prend également en charge les en-têtes de requête communs.

Request parameters

Important

Les paramètres append et position font partie de la ressource CanonicalizedResource et doivent être inclus dans la signature.

Name

Type

Required

Example

Description

append

string

Yes

Not applicable

Indique une opération AppendObject. Chaque appel met à jour la date de dernière modification de l'objet.

position

string

Yes

0

Le décalage en octets à partir duquel commencer l'ajout. Après chaque opération réussie, x-oss-next-append-position indique la position suivante.

Le premier ajout doit définir position sur 0. Les ajouts suivants doivent définir position sur la taille actuelle de l'objet. Par exemple, si le premier ajout a un content-length de 65536, le second doit définir position sur 65536.

  • Lorsque position est 0 et qu'aucun objet du même nom n'existe, la requête se comporte comme PutObject. Vous pouvez définir des en-têtes tels que x-oss-server-side-encryption, qui seront ensuite inclus dans les réponses AppendObject suivantes. Pour modifier les métadonnées ultérieurement, utilisez CopyObject.

  • L'ajout d'un contenu de longueur nulle à la position correcte ne modifie pas l'état de l'objet.

Response headers

En-tête de réponse

Type

Exemple

Description

x-oss-next-append-position

Entier 64 bits

1717

La position pour le prochain ajout, égale à la taille actuelle de l'objet.

Renvoyé en cas de succès ou lorsqu'une erreur 409 survient en raison d'une incompatibilité de position.

x-oss-hash-crc64ecma

Entier 64 bits

3231342946509354535

La valeur CRC 64 bits de l'objet, calculée selon la norme CRC-64/XZ.

Cette opération prend également en charge les en-têtes de réponse communs.

CRC-64 calculation

Méthodes de calcul prises en charge :

  • Calcul utilisant le module Boost CRC

    typedef boost::crc_optimal<64, 0x42F0E1EBA9EA3693ULL, 0xffffffffffffffffULL, 0xffffffffffffffffULL, true, true> boost_ecma;
    uint64_t do_boost_crc(const char* buffer, int length)
    {
        boost_ecma crc;
        crc.process_bytes(buffer, length);
        return crc.checksum();
    }
  • Calcul utilisant Python crcmod

    import crcmod
    do_crc64 = crcmod.mkCrcFun(0x142F0E1EBA9EA3693, initCrc=0, xorOut=0xffffffffffffffff, rev=True)
    print(do_crc64(b"123456789"))

Related operations

Autre opération

Description de la relation

PutObject

L'appel de PutObject sur un objet Appendable existant le remplace et change son type en Normal.

HeadObject

HeadObject sur un objet Appendable renvoie x-oss-next-append-position, x-oss-hash-crc64ecma et x-oss-object-type (défini sur Appendable).

GetBucket (ListObjects)

GetBucket répertorie les objets Appendable avec Type défini sur Appendable.

Examples

  • Exemple de requête

    POST /oss.jpg?append&position=0 HTTP/1.1 
    Host: oss-example.oss.aliyuncs.com 
    Cache-control: no-cache 
    Expires: Wed, 08 Jul 2015 16:57:01 GMT 
    x-oss-storage-class: Archive
    Content-Disposition: attachment;filename=oss_download.jpg 
    Date: Wed, 08 Jul 2015 06:57:01 GMT 
    Content-Type: image/jpg 
    Content-Length: 1717 
    Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,AdditionalHeaders=content-disposition;content-length,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e  
    [1717 bytes of object data]

    Exemple de réponse

    HTTP/1.1 200 OK
    Date: Wed, 08 Jul 2015 06:57:01 GMT
    ETag: "0F7230CAA4BE94CCBDC99C550000****"
    Connection: keep-alive
    Content-Length: 0  
    Server: AliyunOSS
    x-oss-hash-crc64ecma: 14741617095266562575
    x-oss-next-append-position: 1717
    x-oss-request-id: 559CC9BDC755F95A6448****
  • Exemple de requête avec versioning

    Lorsque le versioning est activé, la réponse AppendObject inclut x-oss-version-id, qui spécifie l'ID de version de l'objet actuel.

    POST /example?append&position=0 HTTP/1.1 
    Host: versioning-append.oss.aliyuncs.com 
    Date: Tue, 09 Apr 2019 03:59:33 GMT
    Content-Length: 3
    Content-Type: application/octet-stream
    Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,AdditionalHeaders=content-length,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e

    Exemple de réponse

    HTTP/1.1 200 OK
    Date: Tue, 09 Apr 2019 03:59:33 GMT
    ETag: "2776271A4A09D82CA518AC5C0000****"
    Connection: keep-alive
    Content-Length: 0  
    Server: AliyunOSS
    x-oss-version-id: CAEQGhiBgIC_k6aV5RgiIGI3YTY2ZmMzYWJlMzQ3YjM4YTljOTk5YjUyZGF****
    x-oss-hash-crc64ecma: 3231342946509354535
    x-oss-next-append-position: 47
    x-oss-request-id: 5CAC18A5B7AEADE01700****

SDKs

SDK pour cette opération :

Interface de ligne de commande ossutil

Utilisez la commande append-object dans ossutil.

Error codes

Code d'erreur

Code d'état HTTP

Description

ObjectNotAppendable

409

AppendObject a été appelé sur un objet non ajoutable.

PositionNotEqualToLength

409

  • La valeur de position ne correspond pas à la longueur actuelle de l'objet.

    Utilisez l'en-tête de réponse x-oss-next-append-position pour réessayer. Les requêtes simultanées peuvent toujours échouer avec cette erreur.

  • Lorsque position est 0, la requête réussit uniquement si aucun objet Appendable du même nom n'existe ou si celui-ci a une longueur de 0. Sinon, cette erreur est renvoyée.

InvalidArgument

400

Les valeurs de paramètres telles que x-oss-storage-class et x-oss-object-acl sont invalides.

FileImmutable

409

Le bucket est dans un état protégé et n'autorise ni la suppression ni la modification.

KmsServiceNotEnabled

403

Le chiffrement KMS a été spécifié, mais Key Management Service (KMS) n'est pas activé dans la console.