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 nowszej

  • bytes=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