お知らせ:

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

Objectのアップロード

このセクションに記載されているSDKメソッドを使用すると、さまざまな方法でBucketオブジェクトをアップロードできます。オブジェクトを文字列またはストリームとしてアップロードできます。以下のコードスニペットで使用されているBucket参照は、コンポーネントインスタンスです。

オブジェクトに対してVersioningを有効にしていない場合、Stratusが同じオブジェクトに対して複数の書き込みリクエストを受信すると、オブジェクトは継続的に上書きされます。最新のアップロードのオブジェクトのみが保存されます。

ただし、Versioningが有効な場合、各アップロードはオブジェクトのバージョンとみなされ、それぞれ一意のversionIdでBucket内に保存されます。

Note: パスまたはオブジェクトを作成する際、スペースを含む以下の文字はサポートされていません:ダブルクォーテーション、両方の山括弧、ハッシュタグ、バックスラッシュ、パイプ記号。

ストリームとしてのObjectのアップロード

このSDKメソッドを使用すると、ストリームとしてオブジェクトをBucketにアップロードできます。ストリームを変数に格納し、その変数をアップロードメソッドputObject()に渡します。

copy
// オブジェクトアップロード用のリードストリームを作成する
const file = fs.createReadStream("file_path");
// アップロードメソッドを呼び出す
const res = await bucket.putObject("sam/out/sample.txt", file);
console.log(res);

文字列としてのObjectのアップロード

このSDKメソッドを使用すると、オブジェクトを文字列としてアップロードできます。オブジェクト名と、文字列形式でオブジェクトに保存するデータをアップロードメソッドputObject()に渡します。

copy
//オブジェクトを文字列としてアップロードする
const res = await bucket.putObject("sam/out/sample.txt", "Content of the file");
console.log(res);

オプション付きObjectのアップロード

このSDKメソッドを使用すると、オブジェクトのアップロード時に以下のオプションを使用できます。

  • overwrite: BucketでVersioningが有効になっていない場合に使用できるオプションです。バージョニングなしでは、リソースを上書きする場合にこのオプションを使用する必要があります。デフォルト値は「false」です。

  • ttl: オブジェクトのTime-to-Live(TTL)を秒単位で設定するために使用できるオプションです。値は60秒以上である必要があります。

  • metaData: アップロードされるオブジェクトのメタ情報をアップロードするために使用できるオプションです。

  • contentType: オブジェクトのMIMEタイプを設定する必要がある場合に指定できるオプションです。

copy
const options = {
'overwrite': true, //これにより既存のオブジェクトが上書きされます
'ttl': '300', //有効期限(秒単位)
'metaData': {
'author': 'John'
}
};
const file = fs.createReadStream("filePath");
const uploadRes = await bucket.putObject("sam/out/sample.txt", file, options);
console.log(uploadRes);

解凍オプション付きObjectのアップロード

このSDKメソッドを使用してZIPオブジェクトをアップロードすると、ZIP内のオブジェクトが解凍され、アップロードされます。

copy
const options = {
'ttl': '300', //有効期限(秒単位)
'metaData': {
'author': 'John'
},
// 指定されたZIPファイルの内容を展開し、各ファイルを個別のオブジェクトとしてバケットにアップロードする
'extractUpload': true
};
const file = fs.createReadStream("filePath");
const uploadRes = await bucket.putObject("sam/out/sample.zip", file, options);
console.log(uploadRes);

このSDKメソッドはtaskIdの値を返します。この値を使用して、このSDKメソッドで解凍のステータスを確認できます。

レスポンス例

copy
{ 'task_id': '1234263749' }

マルチパートを使用したObjectのアップロード

このセクションでは、Stratus内のBucketに大きなオブジェクトを正常にアップロードするためのSDKメソッドについて説明します。

マルチパートアップロード機能は、複数のHTTPSリクエストで大きなファイルをBucketにアップロードします。すべての個別パートがアップロードされると、これらすべてのリクエストが単一のオブジェクトに結合されます。

Note: **100 MB以上**のオブジェクトをアップロードする場合は、マルチパートアップロードを推奨方法として検討してください。

アップロードの開始

マルチパート操作を実行するには、マルチパートオブジェクトインスタンスを取得する必要があります。このコンポーネントインスタンスは、Stratus内のBucketに保存されたオブジェクトに対するマルチパート操作を行うさまざまなコードスニペットで参照されます。

使用パラメータ

bucket: このSDKメソッドを使用して事前に初期化しておく必要があるBucketインスタンスです。

copy
const initRes = await bucket.initiateMultipartUpload("sam/out/sample.txt");
console.log(initRes);

レスポンス例

copy
{
"bucket": "zcstratus123-development",
"key": "sam/out/sample.txt",
"upload_id": "01j7xbm4vm5750zbedxqgc4q6m",
"status": "PENDING"
}

Objectのパーツのアップロード

以下のSDKメソッドでは、オブジェクトの個別パーツのアップロードを実行します。各パーツには1〜1000の間の異なるpartNumberがあります。これはパーツの順序を表しますが、これらのパーツは必ずしも順番にアップロードされるわけではありません。すべてのパーツのアップロードが完了すると、これらのパーツは順番に結合されます。

copy
let partNumber = 1;
const file = fs.createReadStream("filePath");
const uploadPartRes = await bucket.uploadPart("sam/out/sample.txt", "uploadId", file, partNumber);
console.log(uploadPartRes);

マルチパートアップロードのサマリーの取得

以下のSDKメソッドを使用して、アップロードされたすべてのパーツの操作サマリーを取得できます。サマリーを表示するには、getMultipartUploadSummary()メソッドを使用します。

copy
const uploadSummaryRes = await bucket.getMultipartUploadSummary("sam/out/sample.txt", "upload_id");
console.log(uploadSummaryRes);

レスポンス例

copy
{
"bucket": "zcstratus12345-development",
"key": "sam/out/sample.txt",
"upload_id": "01hyfyeazrrstmt7k5fa7ej726",
"status": "PENDING",
"parts": [
{
"part_number": 1,
"size": 0,
"uploaded_at": 1716374678999
 },
{
"part_number": 2,
"size": 2797094,
"uploaded_at": 1716374678576
},
{
"part_number": 4,
"size": 0,
"uploaded_at": 1716374679136
}
]
}

Objectのマルチパートアップロードの完了

以下のメソッドを使用すると、すべてのパーツが正常にアップロードされた後にマルチパートプロセスを終了できます。プロセスを完了するには、completeMultipartUpload()メソッドにuploadIdを渡します。

copy
const completeUploadRes = await bucket.completeMultipartUpload("sam/out/sample.txt", "uploadId");
console.log(completeUploadRes);

SDK実装例

copy
const catalyst = require('zcatalyst-sdk-node');
const fs = require('fs');
module.exports = async (req, res) => {
url = req.url;
switch (url) {
case '/':
const app = catalyst.initialize(req);
const stratus = app.stratus();
// バケットインスタンスを作成する
const bucket = stratus.bucket("bucket_name");
// マルチパートアップロード
const key = 'sample.mp4';
// マルチパートアップロードを開始する
const initRes = await bucket.initiateMultipartUpload(key);
// アップロード開始レスポンスからアップロードIDを取得する。
const uploadId = initRes['upload_id'];
const filePath = '/Users/Aliza//sam.mp4';
const partSize = 50 * 1024 * 1024; // MB単位
const fileStream = fs.createReadStream(
filePath,
{ highWaterMark: partSize }
);
let partNumber = 1;
const uploadPromises = [];
fileStream.on('data', async (partData) => {
// 各パートのアップロードをPromise配列に追加して並列アップロードする
const partUploadPromise = bucket.uploadPart(
key,
uploadId,
partData,
partNumber
);
uploadPromises.push(partUploadPromise);
console.log('Part Number: ', partNumber);
partNumber++;
});
// すべてのパートが並列でアップロードされるのを待つ
fileStream.on('end', async () => {			
await Promise.all(uploadPromises);
// マルチパートアップロードを完了する
await bucket.completeMultipartUpload(key, uploadId);
console.log('Successfully Uploaded');
});
res.end();
break;
default:
res.writeHead(404);
res.write('You might find the page you are looking for at "/" path');
break;
}
}

Transfer Managerを使用したObjectのアップロード

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

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

Transfer Managerインスタンスの作成

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

マルチパートアップロード

マルチパートアップロードインスタンスの作成

以下のSDKメソッドは、マルチパートアップロードを開始してマルチパートインスタンスを作成します。

copy
const multipart = await transferManager.createMultipartInstance("sam/out/sample.txt"); // マルチパートインスタンスを作成

既に初期化されたマルチパートアップロード操作のインスタンスを作成する必要がある場合は、以下のコードスニペットをコピーして使用してください。

copy
const multipart = await transferManager.createMultipartInstance("sam/out/sample.txt", "uploadId");

パーツのアップロード

以下のSDKメソッドでは、マルチパートアップロードインスタンスの作成セクションで初期化したmultipartインスタンスを使用します。

copy
const uploadRes = await multipart.uploadPart(fs.createReadStream("filePath"), partNumber);
console.log(uploadRes);

アップロードサマリー

copy
const summaryRes = await multipart.getUploadSummary();
console.log(summaryRes);

アップロードの完了

copy
const completeRes = await multipart.completeUpload();
console.log(completeRes);

ラッパーを使用したObjectのアップロード

以下のSDKメソッドはラッパーとして機能し、複数のステップを使用せずにマルチパートアップロード操作全体が実行されます。この方法を使用すると、オブジェクトは複数のパーツに分割され、複数のパーツとしてBucketにアップロードされ、すべてのパーツがアップロードされると結合されます。

copy
const file = fs.createReadStream("filePath");
const partSize = 50 // MB単位
const objectPartUploadRes = await transferManager.putObjectAsParts("sam/out/sample.txt",file, partSize);
console.log(objectPartUploadRes);

Objectアップロード用の署名付きURLの生成

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

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

使用パラメータ

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

アップロード用署名付きURLの生成レスポンス例

copy
{
signature: "https://sadi-development.zohostratus.com/_signed/text.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747896279887&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=3YBUX1HFSxNQzQJjFrln82AyJsEEuC5T9dsZwWxGyEE"
}

署名付き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=1747911331272&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=K9vuqC7JaATLeM3TX4xXWx0OHcSflbYQ2jCrbKSAAIE';
// 'file_path'を実際のファイルパスに置き換えてください
const data = fs.createReadStream('/Users/ranjitha-18338/Documents/NODE-SDK/Stratus/sam.py');
// オプションのヘッダー。コンテンツタイプはファイルタイプによって異なる場合があります
const headers = {
// 'Content-Type': 'application/json', 
// 非JSONファイルをアップロードする場合は調整してください(例:'text/plain'または'application/octet-stream')
// 'overwrite': 'true', // オプションのヘッダー
};
(async () => {
try {
const response = await axios.put(url, data, { headers });
if (response.status === 200) {
console.log('Object uploaded successfully');
} else {
console.log('⚠️ Error uploading object:', response.data);
}
} catch (error) {
console.error('Upload failed:', error.response?.data || error.message);
}
})();

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