Określanie nagłówka zakresu dla operacji usługi Blob Service
Kilka operacji GET usługi Blob Service obsługuje użycie standardowego nagłówka HTTP Range
. Wielu klientów HTTP, w tym biblioteki klienta platformy .NET, ogranicza rozmiar Range
nagłówka do 32-bitowej liczby całkowitej, a więc jej wartość jest ograniczona do maksymalnie 4 GiB. Ponieważ oba blokowe obiekty blob i stronicowe obiekty blob mogą mieć rozmiar większy niż 4 GiB, usługa Blob akceptuje niestandardowy nagłówek zakresu dla każdej operacji, która przyjmuje nagłówek x-ms-range
HTTP Range
.
Niektórzy klienci HTTP, w tym biblioteka Programu Microsoft Silverlight, całkowicie ograniczają dostęp do nagłówka Range
. Nagłówek x-ms-range
może służyć również do obejścia tych ograniczeń.
x-ms-range
Jeśli nagłówek jest określony w żądaniu, usługa używa zakresu określonego przez x-ms-range
; w przeciwnym razie jest używany zakres określony przez Range
nagłówek.
Uwaga
Biblioteka klienta usługi Azure Storage automatycznie obsługuje ustawianie odpowiedniego nagłówka zakresu w żądaniu podczas ustawiania Range
właściwości PutPageProperties
obiektu.
Formaty nagłówka zakresu
Usługa Blob Service akceptuje dwa zakresy bajtów dla Range
nagłówków i x-ms-range
. Zakres bajtów musi być zgodny z jednym z następujących formatów nagłówków:
bytes=startByte-
w przypadku żądań korzystających z wersji 2011-08-18 lub nowszejbytes=startByte-endByte
dla żądań korzystających ze wszystkich wersji (od 2009-04-14 do najnowszej wersji)
Format 1: bajty=startByte-
Pierwszy format , bytes=startByte-
jest dostępny tylko w przypadku żądań korzystających z wersji 2011-08-18 lub nowszej albo usługi emulatora magazynu w zestawie SDK 1.6 lub nowszym. Ten zakres zwróci bajty z przesunięcia startByte
przez koniec obiektu blob. Aby na przykład określić zakres obejmujący wszystkie bajty po pierwszych 256 bajtach obiektu blob, można przekazać jeden z następujących nagłówków:
Range: bytes=255-
x-ms-range: bytes=255-
Nagłówek Content-Length
w odpowiedzi jest równy liczbie bajtów od przesunięcia do końca obiektu blob. Użycie powyższego zakresu przykładowego dla obiektu blob o długości Content-Length
1024 bajtów wynosi 756.
Jeśli przesunięcie jest prawidłowe i nie przekracza całkowitej długości obiektu blob, żądanie zwróci kod stanu 206 (zawartość częściowa). Jeśli przesunięcie jest nieprawidłowe i przekracza łączną długość obiektu blob, żądanie zwróci kod stanu 416 (Żądany zakres nie jest możliwy do zaspokojenia).
Format 2: bytes=startByte-endByte
Drugi format, bytes=startByte-endByte
, jest dostępny dla żądań przy użyciu wszystkich wersji (2009-04-14 do najnowszej wersji) i dla wszystkich wersji usługi emulatora magazynu. Ten zakres zwróci bajty z przesunięcia startByte
przez endByte
. Aby na przykład określić zakres obejmujący pierwsze 512 bajtów obiektu blob, należy przekazać jeden z następujących nagłówków:
Range: bytes=0-511
x-ms-range: bytes=0-511
Nagłówek Content-Length
w odpowiedzi jest równy liczbie bajtów między każdym przesunięciem. Użycie powyższego zakresu przykładowego dla obiektu blob o długości Content-Length
1024 bajtów będzie wynosić 512.
Jeśli przesunięcie jest prawidłowe i nie przekracza całkowitej długości obiektu blob, żądanie zwróci kod stanu 206 (zawartość częściowa). Jeśli przesunięcie jest nieprawidłowe i przekracza łączną długość obiektu blob, żądanie zwróci kod stanu 416 (Żądany zakres nie jest możliwy do zaspokojenia).
Zobacz też
Pojęcia dotyczące usługi Blob Service
Przechowywanie wersji dla usług Azure Storage