Spécification de l’en-tête de plage pour les opérations de service Blob
Plusieurs opérations GET de service BLOB prennent en charge l'utilisation de l'en-tête HTTP Range
standard. De nombreux clients HTTP, y compris la bibliothèque cliente .NET, limitent la taille de l’en-tête Range
à un entier 32 bits, et sa valeur est donc limitée à un maximum de 4 Gio. Étant donné que les objets blob de blocs et les objets blob de pages peuvent avoir une taille supérieure à 4 Gio, le service Blob accepte un en-tête x-ms-range
de plage personnalisé pour toute opération qui prend un en-tête HTTP Range
.
Certains clients HTTP, y compris la bibliothèque Microsoft Silverlight, limitent l'accès à l'en-tête Range
. L'en-tête x-ms-range
peut être utilisé pour éviter ces limitations.
Si l'en-tête x-ms-range
est spécifié sur une demande, le service utilise la plage spécifiée par x-ms-range
; dans le cas contraire, la plage spécifiée par l'en-tête Range
est utilisée.
Notes
La bibliothèque cliente de Stockage Azure gère automatiquement la définition de l'en-tête de plage approprié dans la demande lorsque vous définissez la propriété Range
de l'objet PutPageProperties
.
Formats d'en-tête Range
Le service BLOB accepte deux plages d'octets pour les en-têtes Range
et x-ms-range
. La plage d'octets doit utiliser l'un ou l'autre des formats suivants pour les en-têtes :
bytes=startByte-
pour les demandes qui utilisent la version du 18/08/2011 ou une version ultérieure.bytes=startByte-endByte
pour les demandes qui utilisent toutes les versions (à partir de la version du 14/04/2009)
Format 1 : octets=startByte-
Le premier format, bytes=startByte-
, est disponible uniquement pour les demandes qui utilisent la version du 18/08/2011 ou les versions ultérieures, ou le service de l'émulateur de stockage dans le Kit de développement logiciel (SDK) 1.6 ou ultérieur. Cette plage renvoie des octets à partir du décalage startByte
jusqu'à la fin de l'objet blob. Par exemple, pour spécifier une plage englobant tous les octets après les 256 premiers octets d'un objet blob, vous pouvez transmettre l'un des en-têtes suivants :
Range: bytes=255-
x-ms-range: bytes=255-
L'en-tête Content-Length
dans la réponse est égal au nombre d'octets à partir du décalage jusqu'à la fin de l'objet blob. L’exemple de plage ci-dessus pour un objet blob de 1 024 octets Content-Length
serait de 756.
Si le décalage est valide et ne dépasse pas la longueur totale de l'objet blob, la demande renvoie le code d'état 206 (Contenu partiel). Si le décalage n'est pas valide et dépasse la longueur totale de l'objet blob, la demande renvoie le code d'état 416 (Plage demandée non satisfaisante).
Format 2 : octets=startByte-endByte
Le deuxième format, bytes=startByte-endByte
, est disponible pour les demandes qui utilisent toutes les versions (à partir de la version du 14/04/2009), et pour toutes les versions du service de l'émulateur de stockage. Cette plage renvoie des octets à partir du décalage startByte
jusqu'à endByte
. Par exemple, pour spécifier une plage englobant les 512 premiers octets d'un objet blob, vous pouvez transmettre l'un des en-têtes suivants :
Range: bytes=0-511
x-ms-range: bytes=0-511
L'en-tête Content-Length
dans la réponse est égal au nombre d'octets entre chaque décalage. En utilisant l'exemple de plage ci-dessus pour un objet blob de 1 024 octets, Content-Length
est égal à 512.
Si le décalage est valide et ne dépasse pas la longueur totale de l'objet blob, la demande renvoie le code d'état 206 (Contenu partiel). Si le décalage n'est pas valide et dépasse la longueur totale de l'objet blob, la demande renvoie le code d'état 416 (Plage demandée non satisfaisante).
Voir aussi
Blob Service Concepts
Versions des services de stockage Azure