大きいファイルをアップロードする際は、そのファイルを小さいパーツに分割し、パーツのアップロードAPIを使用してそれらのパーツをアップロードできます。
アップロードセッションの作成
最初にします。結果のオブジェクトにより、各パーツのサイズとアップロードするパーツの数が定義されます。
ファイルの分割
ファイルをアップロードするパーツに分割します。コマンドラインを使用する場合は、splitコマンドを使用します。
例:
これにより、ファイルが複数のファイルに分割されます。
SHAダイジェストの取得
SHAダイジェストの値を取得するには、次のopenSSLコマンドを使用して、ファイルのパーツをエンコードします。
例:
その結果、Base64でエンコードされたメッセージがアップロードの検証に使用されます。
パーツのアップロード
アップロードするパーツのデータをアップロードします。その際、パーツのバイト範囲と、コンテンツを適切にアップロードするためのSHAダイジェストを指定します。
コンテンツの範囲
各パーツのサイズは、作成したアップロードセッションで指定されているパーツサイズとまったく同じサイズである必要があります。ただし、ファイルの最後のパーツは小さくなる可能性があるため、例外となります。Content-Rangeパラメータの定義は、次のパターンに従います。
Content-Rangeの値を指定する際は、以下の点に注意してください。
- 各パーツのバイト範囲の下限は、パーツサイズの倍数にする必要があります。
- 上限は、パーツサイズの倍数から1を引いた値にする必要があります。
たとえば、パーツサイズが8388608の場合、最初の2つのパーツのコンテンツの範囲は次のようになります。
レスポンス
各アップロードの後、結果のレスポンスには、アップロードされたパーツのIDとSHAが含まれます。
すべてのパーツアップロードのすべてのJSONレスポンスは、に必要なため、保持してください。
範囲の重複
パーツアップロードのリクエストがエラーコードrange_overlaps_existing_partで失敗するのは、アプリケーションがファイルの分割に失敗し、すでにコンテンツがアップロードされている範囲にパーツをアップロードしようとしたことが原因です。アプリケーションでは、この最後のパーツがセッションに継続されなかったと想定する必要があります。
並行アップロード
パーツは並行してアップロードできますが、可能な限り順番にアップロードするようにしてください。バイトオフセットが小さいパーツは、バイトオフセットが大きいパーツより先にアップロードする必要があります。
推奨されるのは、バイトオフセット順に並べたパーツのキューから、3~5個のパーツを並行してアップロードする方法です。パーツのアップロードが失敗した場合は、さらにパーツをアップロードする前に、失敗したアップロードを再試行してください。