再開可能なアップロードでは、ファイルを複数のパートに分割します。 これらのパートは個別にアップロードされた後、マージされて完全なファイルが形成されます。
以下のサンプルコードの catch 構文は、ES6 Promise と async/await に基づいています。 ソフトウェア開発キット (SDK) の使用方法の詳細については、「Node.js SDK のインストール」をご参照ください。
再開可能なアップロードの詳細については、「再開可能なアップロード」をご参照ください。 ライフサイクルルールを設定して、不要なフラグメントを定期的に削除することもできます。 詳細については、「フラグメントの削除」をご参照ください。
マルチパートアップロード機能は、進捗コールバックを指定するために使用できる progress パラメーターを提供します。 コールバックでは、SDK は完了率とブレークポイント情報をパラメーターとして渡します。 再開可能なアップロードを実行するには、アップロード中にチェックポイント情報を保存します。 エラーが発生した場合は、保存したチェックポイントを `multipartUpload` 関数に渡します。 これにより、アップロードは失敗した箇所から再開されます。
サンプルコード
次のコードは、再開可能なアップロードを実行する方法を示しています。
const OSS = require('ali-oss')
const client = new OSS({
// region を、バケットが配置されているリージョンに設定します。 たとえば、バケットが中国 (杭州) リージョンにある場合は、region を 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,
authorizationV4: true,
// バケット名を指定します。
bucket: 'examplebucket',
});
// yourfilepath を、アップロードするファイルのローカルパスに設定します。
const filePath = "yourfilepath";
let checkpoint;
async function resumeUpload() {
// 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; // 現在のループを中断します。
} catch (e) {
console.log(e);
}
}
}
resumeUpload();上記のサンプルコードでは、チェックポイントを変数に保存します。 プログラムがクラッシュすると、チェックポイント情報は失われます。 これを防ぐには、チェックポイントをファイルに保存します。 これにより、プログラムは再起動後にファイルからチェックポイント情報を読み取ることができます。
関連ドキュメント
再開可能なアップロードの完全なサンプルコードについては、GitHub の例をご参照ください。