Spécification de l’en-tête de plage pour FileREST
Certaines opérations FileREST GET 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 fichiers peuvent avoir une taille supérieure à 4 Gio, le Azure Files accepte un en-tête x-ms-range
de plage personnalisé pour toute opération qui prend un en-tête HTTPRange
.
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.
Formats d’en-tête de plage
Azure Files accepte deux plages d’octets pour les Range
en-têtes etx-ms-range
. La plage d'octets doit utiliser l'un ou l'autre des formats suivants pour les en-têtes :
bytes=startByte-
bytes=startByte-endByte
Format 1 : octets=startByte-
Cette plage renvoie des octets à partirdu décalage startByte
jusqu'à la fin du fichier. Par exemple, pour spécifier une plage englobant tous les octets après les 256 premiers octets d'un fichier, 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 du fichier. En utilisant l'exemple de plage ci-dessus pour un fichier de 1 024 octets, Content-Length
est égal à 756.
Si le décalage est valide et ne dépasse pas la longueur totale du fichier, la demande renvoie le code d'état 206 (Contenu partiel). Si le décalage n'est pas valide et dépasse la longueur totale du fichier, la demande renvoie le code d'état 416 (La gamme demandée ne peut pas être satisfaite).
Format 2 : octets=startByte-endByte
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 fichier, 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. L’exemple de plage ci-dessus pour un fichier de 1 024 octets Content-Length
serait de 512.
Si le décalage est valide et ne dépasse pas la longueur totale du fichier, la demande retourne un status code 206 (Contenu partiel). Si le décalage n'est pas valide et dépasse la longueur totale du fichier, la demande renvoie le code d'état 416 (La gamme demandée ne peut pas être satisfaite).