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

Object Storage Service:シンプルなダウンロード (Harmony SDK)

最終更新日:Nov 30, 2025

このトピックでは、Object Storage Service (OSS) バケットからローカルデバイスにオブジェクトをすばやくダウンロードする方法について説明します。

考慮事項

サンプルコード

次のコードは、バケットからローカルメモリにオブジェクトをダウンロードする方法を示しています。

import Client, { RequestError } from '@aliyun/oss';

// OSS クライアントインスタンスを作成します。
const client = new Client({
  // Security Token Service (STS) から取得した AccessKey ID を指定します。
  accessKeyId: 'yourAccessKeyId',
  // STS から取得した AccessKey シークレットを指定します。
  accessKeySecret: 'yourAccessKeySecret',
  // STS から取得した STS トークンを指定します。
  securityToken: 'yourSecurityToken',
  // バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを oss-cn-hangzhou に設定します。
  region: 'oss-cn-hangzhou',
});

// バケットの名前を指定します。
const bucket = 'yourBucketName';
// ダウンロードするオブジェクトの名前を指定します。
const key = 'yourObjectName';

/**
 * オブジェクトをダウンロードします。
 * getObject メソッドを使用して、指定されたバケットとキーからオブジェクトをダウンロードします。オブジェクトのコンテンツは、ArrayBuffer として res.data を介して返されます。
 */
const getObject = async () => {
  try {
    // getObject メソッドを呼び出して、指定されたバケットとキーからオブジェクトをダウンロードします。
    const res = await client.getObject({
      bucket, // バケットの名前を指定します。
      key,    // オブジェクトの名前を指定します。
    });

    // オブジェクトのコンテンツを照会します。データ型は ArrayBuffer です。
    const buf: ArrayBuffer = res.data!;

    // オブジェクトのダウンロード操作の結果を表示します。
    console.log(JSON.stringify(res));
  } catch (err) {
    // リクエスト中の例外をキャプチャします。
    if (err instanceof RequestError) {
      // 既知のエラーの場合は、エラーコード、エラーメッセージ、リクエスト ID、および HTTP ステータスコードを表示します。
      console.log('High-level error code: ', err.code); // ハイレベルエラーコードを表示します。
      console.log('message: ', err.message); // エラーメッセージを表示します。
      console.log('Request ID: ', err.requestId); // リクエスト ID を表示します。
      console.log('HTTP status code: ', err.status); // HTTP ステータスコードを表示します。
      console.log('Fine-grained error code: ', err.ec); // 詳細なエラーコードを表示します。
    } else {
      // その他の不明なタイプのエラーを表示します。
      console.log('unknown error: ', err);
    }
  }
};

// getObject 関数を呼び出して、オブジェクトをダウンロードします。
getObject();

一般的なシナリオ

ローカルファイルへのダウンロード

import Client, { RequestError } from '@aliyun/oss';
import { fileIo as fs } from '@kit.CoreFileKit';

// OSS クライアントインスタンスを作成します。
const client = new Client({
  // Security Token Service (STS) から取得した AccessKey ID を指定します。
  accessKeyId: 'yourAccessKeyId',
  // STS から取得した AccessKey シークレットを指定します。
  accessKeySecret: 'yourAccessKeySecret',
  // STS から取得した STS トークンを指定します。
  securityToken: 'yourSecurityToken',
  // バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを oss-cn-hangzhou に設定します。
  region: 'oss-cn-hangzhou',
});

// バケットの名前を指定します。
const bucket = 'yourBucketName';
// ダウンロードするオブジェクトの名前を指定します。
const key = 'yourObjectName';

/**
 * ストリームを介してオブジェクトコンテンツを受信し、ローカルファイルに保存します。
 * getObject メソッドを使用して、オブジェクトコンテンツをストリームを介して指定されたローカルファイルパスに書き込みます。
 */
const downloadToFile = async () => {
  // オブジェクトコンテンツをローカルファイルに保存するための書き込みストリームを作成します。
  const writeStream = await fs.createStream('yourFilePath', 'w'); // 実際のローカルファイルパスに置き換えます。

  try {
    // getObject メソッドを呼び出してオブジェクトをダウンロードし、writeStream を介してコンテンツを受信します。
    const res = await client.getObject({
      bucket, // バケットの名前を指定します。
      key,    // オブジェクトの名前を指定します。
      writeStream, // オブジェクトコンテンツをローカルファイルに保存するために使用される書き込みストリーム。
    });

    // 注:データはストリームを介して受信されるため、res.data は未定義です。
    console.log(JSON.stringify(res));
  } catch (err) {
    // リクエスト中の例外をキャプチャします。
    if (err instanceof RequestError) {
      // 既知のエラーの場合は、エラーコード、エラーメッセージ、リクエスト ID、および HTTP ステータスコードを表示します。
      console.log('High-level error code: ', err.code); // ハイレベルエラーコードを表示します。
      console.log('message: ', err.message); // エラーメッセージを表示します。
      console.log('Request ID: ', err.requestId); // リクエスト ID を表示します。
      console.log('HTTP status code: ', err.status); // HTTP ステータスコードを表示します。
      console.log('Fine-grained error code: ', err.ec); // 詳細なエラーコードを表示します。
    } else {
      // その他の不明なタイプのエラーを表示します。
      console.log('unknown error: ', err);
    }
  } finally {
    // 操作の完了後に書き込みストリームが閉じられるようにします。
    await writeStream.close();
  }
};

// downloadToFile 関数を呼び出して、オブジェクトをダウンロードし、ローカルファイルに保存します。
downloadToFile();