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

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

最終更新日:Dec 18, 2023

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

説明

このトピックのサンプルコードでは、catchメソッドを使用しています。 このメソッドの構文を取得するには、ECMAScript 6で定義されているPromise関数と、この関数のasyncおよびawaitメソッドを表示します。 SDKの使用方法の詳細については、「インストール」をご参照ください。

再開可能アップロードの詳細については、「再開可能アップロード」をご参照ください。 ライフサイクルルールは、不要になった部品を定期的に削除するように構成できます。 詳細については、「部品の削除」をご参照ください。

progressパラメーターは、コールバックでアップロードの進行状況を取得するために提供されます。 SDKは、アップロードの進行状況とチェックポイント情報をコールバックリクエストのパラメーターとして使用します。 再開可能なアップロードでは、チェックポイント情報が記録されます。 エラーが原因でアップロードタスクが失敗した場合、チェックポイント情報をパラメーターとしてmultipartUploadに渡して、アップロードを続行できます。

サンプルコード

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

const OSS = require('ali-OSS ')

const client = new OSS({
  // バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンをoss-cn-Hangzhouに設定します。 
  region: 'yourregion' 、
  // 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
  accessKeyId: process.env.OSS_ACCESS_KEY_ID、
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET、
  // バケットの名前を指定します。 
  bucket: 'examplebucket'
});

// アップロードされたファイルのローカルパスを指定します。 
const filePath = "yourfilepath";

チェックポイントを許可します。async関数resumeUpload() {
  // アップロードの再試行回数を5回に設定します。 
  for (let i = 0; i < 5; i ++) {
    try {
      const result = await client.multipartUpload('object-name', filePath, {
        チェックポイント、
        async progress(percentage, cpt) {
          checkpoint = cpt;
        },
      });
      console.log (結果);
      break; // ループから抜け出します。 
    } catch (e) {
      console.log(e);
    }
  }
}

resumeUpload(); 

上記のコードでは、チェックポイント情報は変数として記録されています。 プログラムがクラッシュすると、チェックポイント情報が失われます。 チェックポイント情報をファイルに保存することを推奨します。 このようにして、プログラムはプログラムの再起動後にファイルからチェックポイント情報を取得できます。

参考資料

再開可能アップロードの実行に使用される完全なサンプルコードについては、『GitHub』をご参照ください。