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

Object Storage Service:部分ダウンロード

最終更新日:Dec 18, 2023

範囲ダウンロードを使用して、オブジェクトから指定した範囲のデータをダウンロードできます。

データをダウンロードする有効な範囲を指定する

指定した範囲の開始値と終了値がオブジェクトのサイズ以内の場合、指定した範囲内のコンテンツがダウンロードされます。 たとえば、データをダウンロードするオブジェクトのサイズが1,000バイトの場合、有効な範囲はバイト0からバイト999までです。

次のサンプルコードは、ダウンロードする有効な範囲を指定する方法の例を示しています。

const OSS = require('ali-OSS ');

const client = new OSS({
  // バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンをoss-cn-Hangzhouに設定します。 
  リージョン: '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'
});

async関数main() {
  const start = 1, end = 900;
  // オブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。 例: destfolder/examplefile.txt。 
  // 合計900バイトを含む、バイト0からバイト900の範囲内のデータを取得します。 
  // 指定された範囲の開始値または終了値が有効な範囲内にない場合、オブジェクト全体がダウンロードされます。 
  const result = await client.get("<yourObjectName>", {
    ヘッダー:{
      範囲: 'bytes =${ start}-${end}'、
    },
  })
  console.log(result.content.toString())
};

メイン (); 

バケットの命名規則の詳細については、「バケット」をご参照ください。 オブジェクトの命名規則の詳細については、「オブジェクト」をご参照ください。

範囲別にデータをダウンロードする標準動作を指定する

x-oss-range-behavior:standardヘッダーをリクエストに追加して、指定した範囲が有効な範囲内にない場合にダウンロードの動作を変更できます。

次のサンプルコードでは、範囲ごとにデータをダウンロードする標準の動作を指定する方法の例を示します。

const OSS = require('ali-OSS ');

const client = new OSS({
  // バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンをoss-cn-Hangzhouに設定します。 
  リージョン: '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'
});

async関数main() {
  // exampleobject.txtという名前のオブジェクトをアップロードします。サイズは10バイトです。 
  const buf = Buffer.from("abcdefghij");
  クライアント. put("exampleobject.txt" 、buf) を待ちます。
  const result = await client.get("exampleobject.txt", {
  // 範囲をバイト=5〜15に設定します。 この場合、範囲の終了値は有効範囲内にない。 したがって、OSSはHTTPステータスコード206と、バイト6からバイト10までのデータを返します。 
    ヘッダー:{
      範囲: "bytes=5-15" 、      
      "x-oss-range-behavior": "standard" 、
    },
  });
  console.log(result.content.toString() === 'fghij')
  console.log(result.res.status === 206)
  try{
    await client.get("exampleobject.txt", {
      // 範囲をバイト=15〜25に設定します。 この場合、範囲の開始値は有効範囲内にない。 したがって、OSSはHTTPステータスコード416とエラーコードInvalidRangeを返します。 
      ヘッダー:{
        範囲: "bytes=15-25" 、        
        "x-oss-range-behavior": "standard" 、
      },
    })
  } catch(e) {
    console.log(e.status === 416);
    console.lo g(e.name === 'InvalidRangeError')
  }
}

メイン (); 

参考資料

範囲ダウンロードを実行するために呼び出すことができるAPI操作の詳細については、「GetObject」をご参照ください。