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

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

最終更新日:Oct 30, 2024

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

説明

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

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

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

サンプルコード

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

const OSS = require('ali-oss')

const client = new OSS({
  // Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to oss-cn-hangzhou. 
  region: 'yourregion',
  // Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. 
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  authorizationV4: true,
  // Specify the name of the bucket. 
  bucket: 'examplebucket',
});

// Specify the local path of the uploaded file. 
const filePath = "yourfilepath";

let checkpoint;
async function resumeUpload() {
  // Set the number of upload retry operations to 5. 
  for (let i = 0; i < 5; i++) {
    try {
      const result = await client.multipartUpload('object-name', filePath, {
        checkpoint,
        async progress(percentage, cpt) {
          checkpoint = cpt;
        },
      });
      console.log(result);
      break; // Break out of the loop. 
    } catch (e) {
      console.log(e);
    }
  }
}

resumeUpload();

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

関連ドキュメント

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