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

Object Storage Service:再開可能なアップロード (Browser.js SDK)

最終更新日:Nov 30, 2025

再開可能なアップロードでは、ファイルを Object Storage Service (OSS) にアップロードする前にチェックポイントを指定できます。ネットワークエラーやプログラムのクラッシュによってアップロードが中断された場合、チェックポイントからアップロードを再開できます。

注意事項

  • Webpack や Browserify などのパッケージングツールを使用する場合は、npm install ali-oss コマンドを実行して OSS SDK for Browser.js をインストールします。

  • ブラウザから OSS バケットにアクセスする際に、そのバケットに CORS ルールが設定されていない場合、ブラウザはリクエストを拒否します。したがって、ブラウザからバケットにアクセスするには、バケットに CORS ルールを設定する必要があります。詳細については、「インストール」をご参照ください。

  • ほとんどの場合、OSS SDK for Browser.js はブラウザで使用されます。AccessKey ペアの公開を防ぐため、Security Token Service (STS) から取得した一時的なアクセス認証情報を使用して OSS にアクセスすることを推奨します。

    一時的なアクセス認証情報は、AccessKey ペアとセキュリティトークンで構成されます。AccessKey ペアは、AccessKey ID と AccessKey Secret で構成されます。一時的なアクセス認証情報の取得方法の詳細については、「STS を使用した一時的なアクセス権限付与」をご参照ください。

サンプルコード

以下のコードは、再開可能なアップロードの例です。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Document</title>
  </head>
  <body>
    <button id="submit">Upload</button>
    <button id="pause">Pause</button>
    <button id="resume">Resume Upload</button>
    <!-- SDK ファイルをインポートします。-->
    <script
      type="text/javascript"
      src="https://gosspublic.alicdn.com/aliyun-oss-sdk-6.18.0.min.js"
    ></script>
    <script type="text/javascript">
      const client = new OSS({
       // バケットが配置されているリージョンに yourRegion を設定します。たとえば、リージョンが中国 (杭州) の場合、yourRegion を oss-cn-hangzhou に設定します。
       region: 'yourRegion',
       authorizationV4: true,
       // Security Token Service (STS) から取得した一時的な AccessKey ペア (AccessKey ID と AccessKey Secret)。
       accessKeyId: 'yourAccessKeyId',
       accessKeySecret: 'yourAccessKeySecret',
       // STS から取得したセキュリティトークン (SecurityToken)。
       stsToken: 'yourSecurityToken',
       // バケット名を指定します。例:examplebucket。
       bucket: "examplebucket",
    });
      // 再開可能なアップロード用に 100 MB のファイルを生成します。
      const fileContent = Array(1024 * 1024 * 100)
        .fill("a")
        .join("");
      const file = new File([fileContent], "multipart-upload-file");
      // オブジェクトの完全なパス。例:exampledir/exampleobject.txt。
      const name = "test.txt";
      // チェックポイントを定義します。
      let abortCheckpoint;
      // アップロードと一時停止の DOM 要素を取得します。
      const submit = document.getElementById("submit");
      const pause = document.getElementById("pause");
      // 再開の DOM 要素を取得します。
      const resume = document.getElementById("resume");

      // アップロードボタンにリスナーを追加します。「Upload」をクリックするとアップロードが開始されます。
      submit.addEventListener("click", () => {
        client
          .multipartUpload(name, file, {
            progress: (p, cpt, res) => {
              // チェックポイントに値を割り当てます。
              abortCheckpoint = cpt;
              console.log(abortCheckpoint);
              // アップロードの進捗を取得します。
              console.log(p * 100);
            },
          })
          .then((r) => console.log(r));
      });
      // 一時停止ボタンにリスナーを追加します。
      pause.addEventListener("click", () => {
        // アップロードを一時停止します。
        client.cancel();
      });

      const resumeUpload = async () => {
        // リトライ回数を 5 に設定します。
        try {
          const result = await client.multipartUpload(name, file, {
            checkpoint: abortCheckpoint,
            progress: (p, cpt, res) => {
              // 再開可能なアップロードを実装するには、アップロード中にチェックポイント情報を保存します。アップロードエラーが発生した場合、保存されたチェックポイントをパラメーターとして multipartUpload に渡します。これにより、アップロードは最後の失敗箇所から再開されます。
              abortCheckpoint = cpt;
              // アップロードの進捗を取得します。
              console.log(p);
            },
          });
          console.log(result);
        } catch (e) {
          console.log(e);
        }
      };

      // 再開ボタンにリスナーを追加します。「Resume Upload」をクリックするとアップロードが続行されます。
      resume.addEventListener("click", async () => {
        await resumeUpload();
      });
    </script>
  </body>
</html>
            

関連ドキュメント

再開可能なアップロードの完全なサンプルコードについては、「GitHub の例」をご参照ください。