Put BlockPut Block

L'opération Put Block crée un nouveau bloc à valider dans le cadre d'un objet blob.The Put Block operation creates a new block to be committed as part of a blob.

RequêteRequest

La demande Put Block peut être construite comme indiqué ci-dessous.The Put Block request may be constructed as follows. HTTPS est recommandé.HTTPS is recommended. Remplacez moncompte par le nom de votre compte de stockage :Replace myaccount with the name of your storage account:

URI de demande de la méthode PUTPUT Method Request URI Version HTTPHTTP Version
https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=block&blockid=id HTTP/1.1HTTP/1.1

URI du service de stockage émuléEmulated Storage Service URI

Lorsque vous élaborez une demande pour le service de stockage émulé, spécifiez le nom d'hôte de l'émulateur et le port de service BLOB sous la forme 127.0.0.1:10000, suivi du nom de compte de stockage émulé :When making a request against the emulated storage service, specify the emulator hostname and Blob service port as 127.0.0.1:10000, followed by the emulated storage account name:

URI de demande de la méthode PUTPUT Method Request URI Version HTTPHTTP Version
http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob?comp=block&blockid=id HTTP/1.1HTTP/1.1

Pour plus d’informations, consultez utilisation de l’émulateur de stockage Azure pour le développement et le test.For more information, see Using the Azure Storage Emulator for Development and Testing.

Paramètres URIURI Parameters

ParamètreParameter DescriptionDescription
blockid Obligatoire.Required. Une valeur de chaîne Base64 valide qui identifie le bloc.A valid Base64 string value that identifies the block. Avant l'encodage, la taille de la chaîne doit être inférieure ou égale à 64 octets.Prior to encoding, the string must be less than or equal to 64 bytes in size.

Pour un objet blob donné, la longueur de la valeur spécifiée pour le paramètre blockid doit être identique pour chaque bloc.For a given blob, the length of the value specified for the blockid parameter must be the same size for each block.

Notez que la chaîne Base64 doit être encodée dans l'URL.Note that the Base64 string must be URL-encoded.
timeout facultatif.Optional. Le paramètre timeout est exprimé en secondes.The timeout parameter is expressed in seconds. Pour plus d’informations, consultez définition de délais d’attente pour les opérations de service BLOB.For more information, see Setting Timeouts for Blob Service Operations.

En-têtes de requêteRequest Headers

Le tableau suivant décrit les en-têtes de demande obligatoires ou facultatifs.The following table describes required and optional request headers.

En-tête de la demandeRequest Header DescriptionDescription
Authorization Obligatoire.Required. Spécifie le schéma d’autorisation, le nom de compte et la signature.Specifies the authorization scheme, account name, and signature. Pour plus d’informations, consultez autoriser les demandes dans le stockage Azure .See Authorize requests to Azure Storage for more information.
Date ou x-ms-dateDate or x-ms-date Obligatoire.Required. Spécifie la date/heure en temps universel coordonné (UTC) pour la requête.Specifies the Coordinated Universal Time (UTC) for the request. Pour plus d’informations, consultez autoriser les demandes dans le stockage Azure.For more information, see Authorize requests to Azure Storage.
x-ms-version Obligatoire pour toutes les demandes autorisées.Required for all authorized requests. Spécifie la version de l'opération à utiliser pour cette demande.Specifies the version of the operation to use for this request. Pour plus d’informations, consultez contrôle de version pour les services de stockage Azure.For more information, see Versioning for the Azure Storage Services.
Content-Length Obligatoire.Required. La longueur du contenu du bloc, en octets.The length of the block content in bytes. La taille du bloc doit être inférieure ou égale à 4000 MiB pour les versions 2019-12-12 et ultérieures (version préliminaire).The block must be less than or equal to 4000 MiB in size for version 2019-12-12 and later (Preview). Consultez les notes pour connaître les limites des versions antérieures.See the Remarks for limits in older versions.

Lorsque la longueur n'est pas spécifiée, l'opération échoue avec le code d'état 411 (Longueur requise).When the length is not provided, the operation will fail with the status code 411 (Length Required).
Content-MD5 facultatif.Optional. Un hachage MD5 du contenu du bloc.An MD5 hash of the block content. Ce hachage est utilisé pour vérifier l'intégrité du bloc pendant le transport.This hash is used to verify the integrity of the block during transport. Lorsque cet en-tête est spécifié, le service de stockage compare le hachage du contenu qui est arrivé à cette valeur d'en-tête.When this header is specified, the storage service compares the hash of the content that has arrived with this header value.

Notez que ce hachage MD5 n'est pas stocké avec l'objet blob.Note that this MD5 hash is not stored with the blob.

Si les deux hachages ne correspondent pas, l'opération échoue avec le code d'erreur 400 (Demande incorrecte).If the two hashes do not match, the operation will fail with error code 400 (Bad Request).
x-ms-content-crc64 facultatif.Optional. Hachage CRC64 du contenu du bloc.A CRC64 hash of the block content. Ce hachage est utilisé pour vérifier l'intégrité du bloc pendant le transport.This hash is used to verify the integrity of the block during transport. Lorsque cet en-tête est spécifié, le service de stockage compare le hachage du contenu qui est arrivé à cette valeur d'en-tête.When this header is specified, the storage service compares the hash of the content that has arrived with this header value.

Notez que ce hachage CRC64 n’est pas stocké avec l’objet BLOB.Note that this CRC64 hash is not stored with the blob.

Si les deux hachages ne correspondent pas, l'opération échoue avec le code d'erreur 400 (Demande incorrecte).If the two hashes do not match, the operation will fail with error code 400 (Bad Request).

Si les en-têtes Content-MD5 et x-ms-content-crc64 sont présents, la demande échoue avec un 400 (demande incorrecte).If both Content-MD5 and x-ms-content-crc64 headers are present, the request will fail with a 400 (Bad Request).

Cet en-tête est pris en charge dans les versions 2019-02-02 ou ultérieures.This header is supported in versions 2019-02-02 or later.
x-ms-encryption-scope facultatif.Optional. Indique l’étendue de chiffrement à utiliser pour chiffrer le contenu de la demande.Indicates the encryption scope to use to encrypt the request contents. Cet en-tête est pris en charge dans les versions 2019-02-02 ou ultérieures.This header is supported in versions 2019-02-02 or later.
x-ms-lease-id:<ID> Obligatoire si l'objet blob a un bail actif.Required if the blob has an active lease. Pour effectuer cette opération sur un objet blob avec un bail actif, spécifiez l'ID de bail valide pour cet en-tête.To perform this operation on a blob with an active lease, specify the valid lease ID for this header.
x-ms-client-request-id facultatif.Optional. Fournit une valeur opaque générée par le client avec une limite de 1 Kio de caractères qui est enregistrée dans les journaux d’analyse lorsque la journalisation de l’analyse de stockage est activée.Provides a client-generated, opaque value with a 1 KiB character limit that is recorded in the analytics logs when storage analytics logging is enabled. L’utilisation de cet en-tête est fortement recommandée pour la mise en corrélation des activités côté client avec les requêtes reçues par le serveur.Using this header is highly recommended for correlating client-side activities with requests received by the server. Pour plus d’informations, consultez à propos de la journalisation des Storage Analytics et de la journalisation Azure : utilisation des journaux pour suivre les demandes de stockage.For more information, see About Storage Analytics Logging and Azure Logging: Using Logs to Track Storage Requests.

En-têtes de demande (clés de chiffrement fournies par le client)Request Headers (Customer-provided encryption keys)

À partir de la version 2019-02-02, les en-têtes suivants peuvent être spécifiés sur la demande pour chiffrer un objet BLOB avec une clé fournie par le client.Beginning with version 2019-02-02, the following headers may be specified on the request to encrypt a blob with a customer-provided key. Le chiffrement avec une clé fournie par le client (et le jeu d’en-têtes correspondant) est facultatif.Encryption with a customer-provided key (and the corresponding set of headers) is optional.

En-tête de requêteRequest header DescriptionDescription
x-ms-encryption-key Obligatoire.Required. Clé de chiffrement AES-256 encodée en base64.The Base64-encoded AES-256 encryption key.
x-ms-encryption-key-sha256 Obligatoire.Required. Hachage SHA256 encodé en base64 de la clé de chiffrement.The Base64-encoded SHA256 hash of the encryption key.
x-ms-encryption-algorithm: AES256 Obligatoire.Required. Spécifie l’algorithme à utiliser pour le chiffrement.Specifies the algorithm to use for encryption. La valeur de cet en-tête doit être AES256 .The value of this header must be AES256.

Corps de la demandeRequest Body

Le corps de la demande contient le contenu du bloc.The request body contains the content of the block.

Exemple de demandeSample Request

Request Syntax:  
PUT https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=block&blockid=AAAAAA%3D%3D HTTP/1.1  
  
Request Headers:  
x-ms-version: 2011-08-18  
x-ms-date: Sun, 25 Sep 2011 14:37:35 GMT  
Authorization: SharedKey myaccount:J4ma1VuFnlJ7yfk/Gu1GxzbfdJloYmBPWlfhZ/xn7GI=  
Content-Length: 1048576  

responseResponse

La réponse inclut un code d'état HTTP et un ensemble d'en-têtes de réponse.The response includes an HTTP status code and a set of response headers.

Code d’étatStatus Code

Une opération réussie renvoie le code d'état 201 (Créé).A successful operation returns status code 201 (Created).

Pour plus d’informations sur les codes d’État, consultez codes d’État et d’erreur.For information about status codes, see Status and Error Codes.

En-têtes de réponseResponse Headers

La réponse de l'opération inclut les en-têtes suivants.The response for this operation includes the following headers. La réponse peut aussi inclure des en-têtes HTTP standard supplémentaires.The response may also include additional standard HTTP headers. Tous les en-têtes standard sont conformes à la spécification du protocole HTTP/1.1.All standard headers conform to the HTTP/1.1 protocol specification.

En-tête de réponseResponse header DescriptionDescription
Content-MD5 Cet en-tête est renvoyé afin que le client puisse vérifier l'intégrité du contenu du message.This header is returned so that the client can check for message content integrity. La valeur de cet en-tête est calculée par le service BLOB ; elle n'est pas nécessairement identique à la valeur spécifiée dans les en-têtes de demande.The value of this header is computed by the Blob service; it is not necessarily the same value specified in the request headers. Pour les versions 2019-02-02 ou ultérieures, cet en-tête est retourné uniquement lorsque la requête a cet en-tête.For versions 2019-02-02 or later, this header is only returned when the request has this header.
x-ms-content-crc64 Pour les versions 2019-02-02 ou ultérieures, cet en-tête est retourné afin que le client puisse vérifier l’intégrité du contenu du message.For versions 2019-02-02 or later, this header is returned so that the client can check for message content integrity. La valeur de cet en-tête est calculée par le service BLOB ; elle n'est pas nécessairement identique à la valeur spécifiée dans les en-têtes de demande.The value of this header is computed by the Blob service; it is not necessarily the same value specified in the request headers.

Cet en-tête est retourné lorsque Content-md5 l’en-tête n’est pas présent dans la demande.This header is returned when Content-md5 header is not present in the request.
x-ms-request-id Cet en-tête identifie de façon unique la demande qui a été effectuée et peut être utilisé pour résoudre les problèmes de la demande.This header uniquely identifies the request that was made and can be used for troubleshooting the request. Pour plus d’informations, consultez Troubleshooting API Operations.For more information, see Troubleshooting API Operations.
x-ms-version Indique la version du service BLOB utilisée pour exécuter la demande.Indicates the version of the Blob service used to execute the request. Cet en-tête est renvoyé pour les demandes effectuées avec la version 2009-09-19 ou une version ultérieure.This header is returned for requests made against version 2009-09-19 and later.
Date Une valeur de date/heure UTC générée par le service qui indique le moment auquel la réponse a été initiée.A UTC date/time value generated by the service that indicates the time at which the response was initiated.
x-ms-request-server-encrypted: true/false Version 2015-12-11 ou ultérieure.Version 2015-12-11 or newer. La valeur de cet en-tête est définie sur true si le contenu de la demande est correctement chiffré à l’aide de l’algorithme spécifié et dans le false cas contraire.The value of this header is set to true if the contents of the request are successfully encrypted using the specified algorithm, and false otherwise.
x-ms-encryption-key-sha256 Version 2019-02-02 ou ultérieure.Version 2019-02-02 or newer. Cet en-tête est retourné si la demande utilise une clé fournie par le client pour le chiffrement, afin que le client puisse s’assurer que le contenu de la demande est correctement chiffré à l’aide de la clé fournie.This header is returned if the request used a customer-provided key for encryption, so the client can ensure the contents of the request are successfully encrypted using the provided key.
x-ms-encryption-scope Version 2019-02-02 ou ultérieure.Version 2019-02-02 or newer. Cet en-tête est retourné si la demande a utilisé une étendue de chiffrement, afin que le client puisse s’assurer que le contenu de la demande est correctement chiffré à l’aide de l’étendue de chiffrement.This header is returned if the request used an encryption scope, so the client can ensure the contents of the request are successfully encrypted using the encryption scope.
x-ms-client-request-id Cet en-tête peut être utilisé pour dépanner les demandes et les réponses correspondantes.This header can be used to troubleshoot requests and corresponding responses. La valeur de cet en-tête est égale à la valeur de l' x-ms-client-request-id en-tête si elle est présente dans la demande et que la valeur est supérieure à 1024 caractères ASCII visibles.The value of this header is equal to the value of the x-ms-client-request-id header if it is present in the request and the value is at most 1024 visible ASCII characters. Si l' x-ms-client-request-id en-tête n’est pas présent dans la demande, cet en-tête ne sera pas présent dans la réponse.If the x-ms-client-request-id header is not present in the request, this header will not be present in the response.

Exemple de réponseSample Response

Response Status:  
HTTP/1.1 201 Created  
  
Response Headers:  
Transfer-Encoding: chunked  
x-ms-content-crc64: 77uWZTolTHU  
Date: Sun, 25 Sep 2011 23:47:09 GMT  
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0  

AutorisationAuthorization

Cette opération peut être appelée par le propriétaire du compte ou par toute personne avec une signature d'accès partagé qui dispose des autorisations pour écrire dans cet objet blob ou son conteneur.This operation can be called by the account owner and by anyone with a Shared Access Signature that has permission to write to this blob or its container.

RemarquesRemarks

Put Block télécharge un bloc pour l'inclure ultérieurement dans un objet blob de blocs.Put Block uploads a block for future inclusion in a block blob. Un objet blob de blocs peut inclure un maximum de 50 000 blocs.A block blob can include a maximum of 50,000 blocks. Chaque bloc peut avoir une taille différente, jusqu’à un maximum de 4000 MiB pour les versions 2019-12-12 et ultérieures (version préliminaire), 100 MiB pour la version 2016-05-31 et ultérieure et 4 MiB pour les versions antérieures.Each block can be a different size, up to a maximum of 4000 MiB for version 2019-12-12 and later (Preview), 100 MiB for version 2016-05-31 and later, and 4 MiB for older versions. La taille maximale d’un objet blob de blocs est donc de 190,7 tio (4000 MiB X 50 000 blocs) pour les versions 2019-12-12 et ultérieures (version préliminaire), 4,75 tio (100 les blocs MiB X 50 000) pour la version 2016-05-31 et ultérieure, et 195 Gio (4 blocs MiB X 50 000) pour toutes les anciennes versions.The maximum size of a block blob is therefore 190.7 TiB (4000 MiB X 50,000 blocks) for version 2019-12-12 and later (Preview), 4.75 TiB (100 MiB X 50,000 blocks) for version 2016-05-31 and later, and 195 GiB (4 MiB X 50,000 blocks) for all older versions.

Un objet BLOB peut avoir un maximum de 100 000 blocs non validés à un moment donné.A blob can have a maximum of 100,000 uncommitted blocks at any given time. Si cette valeur maximale est dépassée, le service retourne le code d’État 409 (RequestEntityTooLargeBlockCountExceedsLimit).If this maximum is exceeded, the service returns status code 409 (RequestEntityTooLargeBlockCountExceedsLimit).

Après avoir téléchargé un ensemble de blocs, vous pouvez créer ou mettre à jour l’objet BLOB sur le serveur à partir de ce jeu en appelant l’opération Put Block List .After you have uploaded a set of blocks, you can create or update the blob on the server from this set by calling the Put Block List operation. Chaque bloc dans l'ensemble est identifié par un ID de bloc qui est unique au sein de cet objet blob.Each block in the set is identified by a block ID that is unique within that blob. Les ID de bloc dépendent d'un objet blob particulier, afin que les différents objets blob puissent avoir des blocs avec les mêmes ID.Block IDs are scoped to a particular blob, so different blobs can have blocks with same IDs.

Si vous appelez Put Block sur un objet blob qui n'existe pas encore, un nouvel objet blob est créé avec un contenu d'une longueur égale à 0.If you call Put Block on a blob that does not yet exist, a new block blob is created with a content length of 0. Cet objet blob est énuméré par l'opération List Blobs si l'option include=uncommittedblobs est spécifiée.This blob is enumerated by the List Blobs operation if the include=uncommittedblobs option is specified. Le bloc ou les blocs que vous avez téléchargés ne sont pas validés tant que vous n'appelez pas Put Block List sur le nouvel objet blob.The block or blocks that you uploaded are not committed until you call Put Block List on the new blob. Un objet blob créé de cette manière est conservé sur le serveur pendant une semaine ; si vous n'avez pas ajouté de blocs ou validé des blocs pour l'objet blob pendant cette période, l'objet blob est récupéré par le garbage collector.A blob created this way is maintained on the server for a week; if you have not added more blocks or committed blocks to the blob within that time period, then the blob is garbage collected.

Un bloc qui a été correctement téléchargé avec l'opération Put Block ne fait pas partie d'un objet blob tant qu'il n'a pas été validé avec Put Block List.A block that has been successfully uploaded with the Put Block operation does not become part of a blob until it is committed with Put Block List. Avant que Put Block List soit appelé pour valider l’objet BLOB nouveau ou mis à jour, tous les appels à obtenir l’objet BLOB renvoient le contenu de l’objet BLOB sans l’inclusion du bloc non validé.Before Put Block List is called to commit the new or updated blob, any calls to Get Blob return the blob contents without the inclusion of the uncommitted block.

Si vous téléchargez un bloc dont l'ID est identique à un autre ID de bloc qui n'a pas encore été validé, le dernier bloc téléchargé qui porte cet ID sera validé lors de la prochaine opération Put Block List réussie.If you upload a block that has the same block ID as another block that has not yet been committed, the last uploaded block with that ID will be committed on the next successful Put Block List operation.

Une fois Put Block List appelé, tous les blocs non validés spécifiés dans la liste de blocs sont validés dans le cadre du nouvel objet blob.After Put Block List is called, all uncommitted blocks specified in the block list are committed as part of the new blob. Tous les blocs non validés qui n'ont pas été spécifiés dans la liste de blocs pour l'objet blob seront récupérés par le garbage collector et supprimés du service BLOB.Any uncommitted blocks that were not specified in the block list for the blob will be garbage collected and removed from the Blob service. Tous les blocs non validés seront également récupérés par le garbage collector s'il n'existe aucun appel réussi à Put Block ou à Put Block List sur l'objet blob dans la semaine qui suit la dernière opération Put Block réussie.Any uncommitted blocks will also be garbage collected if there are no successful calls to Put Block or Put Block List on the same blob within a week following the last successful Put Block operation. Si l' objet BLOB put est appelé sur l’objet BLOB, tous les blocs non validés seront récupérés par le garbage collector.If Put Blob is called on the blob, any uncommitted blocks will be garbage collected.

Si l'objet blob a un bail actif, le client doit spécifier un ID de bail valide dans la demande afin d'écrire un bloc dans l'objet blob.If the blob has an active lease, the client must specify a valid lease ID on the request in order to write a block to the blob. Si le client ne spécifie pas un ID de bail ou spécifie un ID de bail incorrect, le service BLOB retourne le code d'état 412 (Échec de la précondition).If the client does not specify a lease ID, or specifies an invalid lease ID, the Blob service returns status code 412 (Precondition Failed). Si le client spécifie un ID de bail, mais que l'objet blob n'a pas de bail actif, le service BLOB retourne également le code d'état 412 (Échec de la précondition).If the client specifies a lease ID but the blob does not have an active lease, the Blob service also returns status code 412 (Precondition Failed).

Pour un objet blob donné, tous les ID de bloc doivent avoir la même longueur.For a given blob, all block IDs must be the same length. Si un bloc est téléchargé avec un ID de bloc d'une longueur différente des ID de bloc des blocs non validés existants, le service retourne le code de réponse d'erreur 400 (Demande incorrecte).If a block is uploaded with a block ID of a different length than the block IDs for any existing uncommitted blocks, the service returns error response code 400 (Bad Request).

Si vous essayez de charger un bloc qui est supérieur à 4000 MiB pour les versions 2019-12-12 et ultérieures (préversion), supérieur à 100 MiB pour la version 2016-05-31 et ultérieure et supérieur à 4 MiB pour les versions antérieures, le service retourne le code d’État 413 (entité de demande trop grande).If you attempt to upload a block that is larger than 4000 MiB for version 2019-12-12 and later (Preview), larger than 100 MiB for version 2016-05-31 and later, and larger than 4 MiB for older versions, the service returns status code 413 (Request Entity Too Large). Le service retourne également des informations supplémentaires sur l'erreur dans la réponse, notamment la taille du bloc maximale autorisée en octets.The service also returns additional information about the error in the response, including the maximum block size permitted in bytes.

L'appel de Put Block ne met pas à jour l'heure de la dernière modification d'un objet blob existant.Calling Put Block does not update the last modified time of an existing blob.

L'appel de Put Block sur un objet blob de pages retourne une erreur.Calling Put Block on a page blob returns an error.

Put BlockL’appel de sur un objet BLOB archivé retourne une erreur et, sur un Hot / Cool objet BLOB, ne modifie pas le niveau de l’objet BLOB.Calling Put Block on an archived blob will return an error and on Hot/Cool blob does not change the blob tier.

Voir aussiSee Also

Autoriser les demandes au stockage Azure Authorize requests to Azure Storage
Codes d’État et d’erreur Status and Error Codes
Codes d’erreur du service BLOB Blob Service Error Codes
Définition de délais d'expiration pour les opérations du service BLOBSetting Timeouts for Blob Service Operations