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
positionsur 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 |
|
Appelez cette opération pour télécharger un objet en l'ajoutant à un objet existant. |
|
|
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 :
|
|
x-oss-object-acl |
string |
No |
private |
La liste de contrôle d'accès (ACL) de l'objet. Valeurs valides :
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 :
Plus de détails sont disponibles dans la section Classes de stockage. Important
|
|
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 Important
|
Cette opération prend également en charge les en-têtes de requête communs.
Request parameters
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.
|
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 |
|
L'appel de PutObject sur un objet Appendable existant le remplace et change son type en Normal. |
|
|
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 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=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218eExemple 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 |
|
|
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. |