お知らせ:

当社は、お客様により充実したサポート情報を迅速に提供するため、本ページのコンテンツは機械翻訳を用いて日本語に翻訳しています。正確かつ最新のサポート情報をご覧いただくには、本内容の英語版を参照してください。

Objectのダウンロード

Objectのダウンロード

このセクションのSDKを使用すると、特定のオブジェクト、複数のオブジェクト、またはオブジェクトのバージョンをダウンロードできます。以下のコードスニペットで使用されているBucket参照は、コンポーネントインスタンスです。

ダウンロード操作の最初のステップは、Bucketから必要なオブジェクトを取得するGET操作です。

オブジェクトをダウンロードするには、リクエスターにREADアクセス権限が必要です。ただし、Bucketの所有者は、必要なレスポンスヘッダーを使用せずにオブジェクトをダウンロードできるように、ユーザーにREADアクセス権限を付与するオプションがあります。

BucketでVersioningが有効な場合、特定のバージョンのオブジェクトをダウンロードするにはversionIdを渡す必要があります。versionIdを渡さない場合、デフォルトで最新バージョンのオブジェクトがダウンロードされます。

BucketでVersioningが有効にされた後、無効にされた場合。デフォルトでは、プリンシパルの最初のオブジェクトがダウンロードされます。このオブジェクトの最新バージョンをダウンロードするには、versionIdパラメータに値「topVersion」を渡す必要があります。

copy
const res = await bucket.getObject("sam/out/sample.txt");
// オブジェクトをローカルマシンにダウンロードする
const files = fs.createWriteStream('filePath');
res.on('data', (data) => {
files.write(data)
});

Objectの一部をダウンロード

以下のSDKメソッドは、rangeパラメータとともに使用されます。rangeパラメータを使用すると、オブジェクトの特定のrangeのバイトをダウンロードできます。

copy
const options = {
'versionId': 'djkshr8374yiuhf48', // 指定されたversionIdでオブジェクトをダウンロード
'range': '0-2000' // オブジェクトの開始・終了範囲(バイト単位)
}
const res = await bucket.getObject("sam/out/sample.txt", options);
// オブジェクトをローカルマシンにダウンロードする
const files = fs.createWriteStream('filePath');
res.on('data', (data) => {
files.write(data)
});

Transfer Managerを使用したObjectのダウンロード

このセクションでは、Transfer Manager技術を使用して、Stratusからローカルシステムに大きなオブジェクトを正常にダウンロードするためのSDKメソッドについて説明します。Transfer Managerは、大きなオブジェクトをオブジェクトの開始バイトと終了バイトの範囲を使用して複数のバイト範囲に分割する操作です。オブジェクトの各パートはストリームとして返され、ローカルシステムにダウンロードされます。

以下のパッケージがインポートされていることを確認してください

copy
const { TransferManager } = require('zcatalyst-sdk-node/lib/stratus');

Transfer Managerインスタンスの作成

copy
 const transferManager = new TransferManager(bucket); // Transfer Managerインスタンスを作成

イテラブルパートストリームとしてのObjectダウンロード

copy
const partSize=50;
const getObjectRes = await transferManager.getIterableObject("sam/out/sample.txt",partSize);
// オブジェクトをローカルマシンにダウンロードする
const file = fs.createWriteStream('filePath'); // ファイル書き込みストリームを作成
for await (const chunk of getObjectRes) {
file.write(chunk);
}

ダウンロード用のObjectパーツの生成

このSDKメソッドでは、必要な開始バイトと終了バイトの範囲に該当するオブジェクトの一部をダウンロードします。

copy
const file = fs.createWriteStream("filePath");
const partSize = 50;
const downloadRes = await transferManager.generatePartDownloaders("sam/out/sample.txt", partSize);
let partNum = 0;
while (partNum < downloadRes.length) {
const objectPart = downloadRes[partNum++];
const buffer = await objectPart(); // オブジェクトの一部をストリームとして返す
// ストリームを処理する
}

Objectダウンロード用の署名付きURLの生成

署名付きURLは、認証済みユーザーが非認証ユーザーに共有できる安全なURLです。このURLは、非認証ユーザーにオブジェクトにアクセスするための一時的な認可を提供します。以下のコードスニペットで使用されているBucket参照は、コンポーネントインスタンスです。

Info: このSDKメソッドを使用するには、Adminスコープで初期化する必要があります。この要件の詳細については、このセクションをご覧ください。

使用パラメータ

Parameter Name Data Type Definition
key String 必須パラメータです。オブジェクトの完全な名前とパスを保持します。
urlAction Request Method 必須パラメータです。ダウンロード(GET)アクション用の署名付きURLを生成するためのパラメータです。
  • GET: オブジェクトをダウンロードするため
expiry String 任意パラメータです。URLの有効時間(秒単位)。
  • デフォルト値: 3600秒
  • 最小値: 30秒
  • 最大値: 7日
activeFrom String 任意パラメータです。URLが有効になる時間を含みます。最大値は7日です。デフォルトでは、URLは生成されるとすぐに有効になります。
copy
const signedURLRes = await bucket.generatePreSignedUrl("sam/out/sample.txt", 'GET', {
'expiryIn': 100, // 有効期限(秒)
'activeFrom':'12334454327', // 指定された日付にURLを有効化
'versionId': '746398diij94839'
});
console.log(signedURLRes);

ダウンロード用署名付きURLの生成レスポンス例

copy
{
"signature": "https://sadi-development.zohostratus.com/_signed/text.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747898364894&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=SFdW4woI5nXPCSCghrymsv06hM0cimwZpkFwHWngtto",
"expiry_in_seconds": "100",
"active_from": "12334454327"
}

署名付きURLを使用したObjectダウンロードのスニペット例

Info: この例は、Axiosリクエストハンドラーパッケージを使用して示されています。
copy
const axios = require('axios');
const fs = require('fs');
// ファイルの実際の署名付きURLに置き換えてください。
const url = 'https://sadi-development.zohostratus.com/_signed/text.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747898364894&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=SFdW4woI5nXPCSCghrymsv06hM0cimwZpkFwHWngtto';
(async () => {
try {
// ファイルをストリームとしてダウンロードするGETリクエストを送信する
const response = await axios.get(url, { responseType: 'stream' });
// ファイルをローカルに保存するための書き込みストリームを作成する
const file = fs.createWriteStream('file_path'); // 希望の出力パスに置き換えてください
// レスポンスストリームをファイルストリームにパイプする
response.data.pipe(file);
// ファイルのダウンロード完了時に通知する
file.on('finish', () => {
console.log('File downloaded successfully');
});
//  書き込み中のエラーを処理する
file.on('error', (err) => {
console.error('Error writing file:', err);
});
} catch (err) {
console.error('Error downloading file:', err);
}
})();

最終更新日 2026-03-30 13:40:30 +0530 IST