すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:再開可能なアップロード

最終更新日:Dec 20, 2023

再開可能なアップロードを使用してオブジェクトをobject Storage Service (OSS) にアップロードする場合、再開可能なアップロードレコードを格納するチェックポイントファイルのディレクトリを指定できます。 ネットワーク例外またはプログラムエラーのためにオブジェクトのアップロードに失敗した場合、チェックポイントファイルに記録された位置からアップロードタスクが再開されます。

実装方法

オブジェクトは、独立してアップロードできるいくつかの部分に分割できます。 すべてのパーツがアップロードされた後、それらは完全なオブジェクトに結合されます。

再開可能アップロードを実装するには、Bucket#resumable_uploadメソッドを呼び出します。 メソッドは、以下のパラメータを含む。

パラメーター

説明

必須

デフォルト値

キー

OSSにアップロードされたオブジェクトのフルパス。

必須

なし

ファイル

OSSにアップロードするローカルファイルのフルパス。

説明

アップロード中にローカルファイルのETag値が変更された場合、アップロードは失敗します。

必須

なし

:cpt_file

チェックポイントファイルのパス。 ファイルに対する書き込み権限が必要です。

説明
  • 部品のアップロードが失敗した場合、このオブジェクトに対する次のアップロード操作は、に記録されている位置から続行されます。cptファイル。 Bucket#resumable_uploadメソッドを再度呼び出すときは、前のアップロード操作で使用されるcptファイル。 . cptファイルは、オブジェクトのアップロード後に削除されます。

  • . cptファイルは、アップロードの中間ステータス情報を記録し、アップロードされたデータを検証するために使用できます。 を編集できません。cptファイル。 の場合。cptファイルが破損し、アップロードが失敗します。

任意

ローカルファイルのディレクトリにあるfile.cptfileはローカルファイルの名前です。

:disable_cpt

アップロードの進行状況を記録するかどうかを指定します。 有効な値:

  • true: アップロードの進行状況は記録されません。 アップロードが失敗した場合、アップロードは再開できません。

  • false: アップロードの進行状況を記録します。 アップロードが失敗した場合、チェックポイントファイルに記録された位置からアップロードが再開されます。

任意

false

:part_size

各部分のサイズ。

任意

4 MB

&ブロック

アップロードの進行状況をブロック単位で処理するかどうかを指定します。 Bucket#resumable_uploadを呼び出したときにブロックを渡すと、アップロードの進行状況はブロック単位で処理されます。

なし

サンプルコード

次のコードは、再開可能なアップロードを実行する方法の例を示します。

'aliyun/oss 'が必要です

client = Aliyun::OSS::Client.new (
  # この例では、中国 (杭州) リージョンのエンドポイントが使用されます。 実際のエンドポイントを指定します。 
  エンドポイント: 'https:// oss-cn-hangzhou.aliyuncs.com '、
  # 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
  access_key_id: ENV['OSS_ACCESS_KEY_ID '] 、
  access_key_secret: ENV['OSS_ACCESS_KEY_SECRET ']
)
# バケットの名前を指定します。 例: examplebucket. 
bucket = client.get_bucket('examplebucket')
# キーパラメーターをオブジェクトのフルパスに設定します。 バケット名をフルパスに含めないでください。 例: exampledir/example.zip. 
# fileパラメーターをアップロードするローカルファイルのフルパスに設定します。 例: /tmp/example.zip。 
bucket.resumable_upload('exampledir/example.zip ', '/tmp/example.zip ') do | p |
  「進捗状況: #{p} 」を置きます
終了

bucket.resumable_upload (
  'exampledir/example.zip '、'/tmp/example.zip '、
  : part_size => 100*1024, :cpt_file => '/tmp/example.zip.cpt') { | p |
  「進捗状況: #{p} 」を置きます
}