Fragment
フラグメント パケットを使用して、アップロード ファイルのフラグメントをサーバーに送信します。
BITS_POST remote-URL HTTP/1.1
BITS-Packet-Type: Fragment
BITS-Session-Id: {guid}
Content-Name: filename
Content-Length: length
Content-Range: Bytes range/total-length
Content-Encoding: encoding
-
BITS_POST
-
BITS サーバーへのこのパケットを識別する BITS 固有の動詞。
remote-URL を絶対 URI または相対 URI に置き換えます。 通常、remote-URL をジョブのリモート ファイル名に置き換えます。 ネットワーク負荷分散に関する考慮事項については、 作成セッション パケットの BITS-Host-Id ヘッダーを参照してください。
-
BITS-Packet-Type
-
この要求パケットをフラグメント パケットとして識別します。
-
BITS-Session-Id
-
サーバーへのセッションを識別する文字列 GUID。 {guid} を、サーバーが Ack for Create-Session 応答パケットで返すセッション識別子に置き換えます。
-
Content-Name
-
このヘッダーは、最初のフラグメントでのみ指定します。 filename をジョブのローカル ファイル名の名前に置き換えます。 名前にパスは含まれません。
-
Content-Length
-
length をフラグメント本文で送信されたバイト数に置き換えます。
-
Content-Range
-
ターゲット ファイル内の範囲を適用する場所をサーバーに指示します。 range を、変換先ファイル内の範囲の開始オフセットと終了オフセットに置き換えます。 オフセットは 0 から始まります。 指定された範囲が既存の範囲と重複する場合、BITS は範囲の重複しない部分のみを書き込みます。BITS は既存のコンテンツを上書きしません。 たとえば、最初のパケットに範囲 0 から 100 が含まれていて、2 番目のパケットに 50 ~ 150 の範囲が含まれている場合、BITS は 2 番目のパケットからバイト 101 から 150 のみを書き込みます。 total-length をファイル内の合計バイト数に置き換えます。
-
コンテンツ エンコード
-
encoding を、クライアントがフラグメントで使用するエンコードの種類に置き換えます。 クライアントは、 Ack for Create-Session 応答パケットの Accept-Encoding ヘッダーでサーバーが識別するエンコードを使用する必要があります。 サーバーはエンコードの種類を使用してフラグメントをデコードします。 すべてのフラグメントで同じエンコードを指定する必要があります。
エンコードの種類が Identity の場合は、このヘッダーを送信しないでください。 BITS サーバーでは、ID エンコードのみがサポートされます。
フラグメントは、パケットの本文で送信されるバイトの範囲です。 クライアントは、オフセット 0 から順にフラグメントを送信します。サーバーは連続していない範囲を追跡しません。 クライアントが連続していない範囲を送信する場合、サーバーは Ack for Fragment 応答で HTTP 416 (範囲が満たされない) リターン コードを返します。
Content-xxxx ヘッダーは標準の HTTP 1.1 ヘッダーです。 Content-xxxx ヘッダーの詳細については、RFC 2616 仕様を参照してください。