--- title: "Objectのアップロード" url: https://docs.catalyst.zoho.com/ja/sdk/nodejs/v2/cloud-scale/stratus/upload-object/ description: "このページでは、BucketにオブジェクトをアップロードするためのNode.js SDKメソッドを紹介します。" last_updated: 2026-03-30T08:10:30Z service: Cloud Scale type: general related_links: - name: "Stratus Component Help Documentation" url: /ja/cloud-scale/help/stratus/introduction - name: "Upload Object Help Documentation" url: /ja/cloud-scale/help/stratus/objects/upload-object/ - name: "Java SDK" url: /ja/sdk/java/v1/cloud-scale/stratus/upload-object/ - name: "Python SDK" url: /ja/sdk/python/v1/cloud-scale/stratus/upload-object/ - name: "Web SDK" url: /ja/sdk/web/v4/cloud-scale/stratus/upload-object/ - name: "iOS SDK" url: /ja/sdk/ios/v2/cloud-scale/stratus/upload-object/ - name: "Android SDK" url: /ja/sdk/android/v2/cloud-scale/stratus/upload-object/ - name: "Flutter SDK" url: /ja/sdk/flutter/v2/cloud-scale/stratus/upload-object/ - name: "REST API" url: /ja/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets --- # Objectのアップロード このセクションに記載されているSDKメソッドを使用すると、さまざまな方法で[Bucket](https://docs.catalyst.zoho.com/ja/cloud-scale/help/stratus/buckets/name-bucket/)に[オブジェクトをアップロード](https://docs.catalyst.zoho.com/ja/cloud-scale/help/stratus/objects/upload-object/)できます。オブジェクトを**文字列**または**ストリーム**としてアップロードできます。以下のコードスニペットで使用されているBucket参照は、[コンポーネントインスタンス](https://docs.catalyst.zoho.com/ja/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/)です。 オブジェクトに対して[Versioning](https://docs.catalyst.zoho.com/ja/cloud-scale/help/stratus/stratus-config/general-settings/#versioning)を有効にしていない場合、Stratusが同じオブジェクトに対して複数の書き込みリクエストを受信すると、オブジェクトは継続的に上書きされます。最新のアップロードのオブジェクトのみが保存されます。 ただし、Versioningが有効な場合、各アップロードはオブジェクトのバージョンとみなされ、それぞれ一意の`versionId`でBucket内に保存されます。 > **Note:** パスまたはオブジェクトを作成する際、スペースを含む以下の文字はサポートされていません:ダブルクォーテーション、両方の山括弧、ハッシュタグ、バックスラッシュ、パイプ記号。 ### ストリームとしてのObjectのアップロード このSDKメソッドを使用すると、ストリームとしてオブジェクトをBucketにアップロードできます。ストリームを変数に格納し、その変数をアップロードメソッド`putObject()`に渡します。 ```javascript // オブジェクトアップロード用のリードストリームを作成する const file = fs.createReadStream("file_path"); // アップロードメソッドを呼び出す const res = await bucket.putObject("sam/out/sample.txt", file); console.log(res); ``` ### 文字列としてのObjectのアップロード このSDKメソッドを使用すると、オブジェクトを文字列としてアップロードできます。オブジェクト名と、文字列形式でオブジェクトに保存するデータをアップロードメソッド`putObject()`に渡します。 ```javascript //オブジェクトを文字列としてアップロードする 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`: アップロードされるオブジェクトの[メタ情報](https://docs.catalyst.zoho.com/ja/cloud-scale/help/stratus/objects/introduction/#metadata)をアップロードするために使用できるオプションです。 * `contentType`: オブジェクトのMIMEタイプを設定する必要がある場合に指定できるオプションです。 ```javascript 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内のオブジェクトが解凍され、アップロードされます。 ```java 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メソッド](https://docs.catalyst.zoho.com/ja/sdk/nodejs/v2/cloud-scale/stratus/extract-zipped-object/#get-zip-extraction-status)で解凍のステータスを確認できます。 **レスポンス例** ```json { 'task_id': '1234263749' } ``` ### マルチパートを使用したObjectのアップロード このセクションでは、Stratus内のBucketに大きなオブジェクトを正常にアップロードするためのSDKメソッドについて説明します。 マルチパートアップロード機能は、複数のHTTPSリクエストで大きなファイルをBucketにアップロードします。すべての個別パートがアップロードされると、これらすべてのリクエストが単一のオブジェクトに結合されます。 > **Note:** **100 MB以上**のオブジェクトをアップロードする場合は、**マルチパートアップロード**を推奨方法として検討してください。 #### アップロードの開始 マルチパート操作を実行するには、マルチパートオブジェクトインスタンスを取得する必要があります。このコンポーネントインスタンスは、Stratus内のBucketに保存されたオブジェクトに対するマルチパート操作を行うさまざまなコードスニペットで参照されます。 **使用パラメータ** `bucket`: この[SDKメソッド](https://docs.catalyst.zoho.com/ja/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/)を使用して事前に初期化しておく必要があるBucketインスタンスです。 ```javascript const initRes = await bucket.initiateMultipartUpload("sam/out/sample.txt"); console.log(initRes); ``` **レスポンス例** ```json { "bucket": "zcstratus123-development", "key": "sam/out/sample.txt", "upload_id": "01j7xbm4vm5750zbedxqgc4q6m", "status": "PENDING" } ``` #### Objectのパーツのアップロード 以下のSDKメソッドでは、オブジェクトの個別パーツのアップロードを実行します。各パーツには1〜1000の間の異なるpartNumberがあります。これはパーツの順序を表しますが、これらのパーツは必ずしも順番にアップロードされるわけではありません。すべてのパーツのアップロードが完了すると、これらのパーツは順番に結合されます。 ```javascript 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()`メソッドを使用します。 ```javascript const uploadSummaryRes = await bucket.getMultipartUploadSummary("sam/out/sample.txt", "upload_id"); console.log(uploadSummaryRes); ``` **レスポンス例** ```json { "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を渡します。 ```javascript const completeUploadRes = await bucket.completeMultipartUpload("sam/out/sample.txt", "uploadId"); console.log(completeUploadRes); ``` **SDK実装例** ```javascript 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のアップロード **以下のパッケージがインポートされていることを確認してください** ```javascript const { TransferManager } = require('zcatalyst-sdk-node/lib/stratus'); ``` #### Transfer Managerインスタンスの作成 ```javascript const transferManager = new TransferManager(bucket); // Transfer Managerインスタンスを作成 ``` #### マルチパートアップロード **マルチパートアップロードインスタンスの作成** 以下のSDKメソッドは、マルチパートアップロードを開始してマルチパートインスタンスを作成します。 ```javascript const multipart = await transferManager.createMultipartInstance("sam/out/sample.txt"); // マルチパートインスタンスを作成 ``` 既に初期化されたマルチパートアップロード操作のインスタンスを作成する必要がある場合は、以下のコードスニペットをコピーして使用してください。 ```javascript const multipart = await transferManager.createMultipartInstance("sam/out/sample.txt", "uploadId"); ``` #### パーツのアップロード 以下のSDKメソッドでは、*マルチパートアップロードインスタンスの作成*セクションで初期化した`multipart`インスタンスを使用します。 ```javascript const uploadRes = await multipart.uploadPart(fs.createReadStream("filePath"), partNumber); console.log(uploadRes); ``` #### アップロードサマリー ```javascript const summaryRes = await multipart.getUploadSummary(); console.log(summaryRes); ``` #### アップロードの完了 ```javascript const completeRes = await multipart.completeUpload(); console.log(completeRes); ``` #### ラッパーを使用したObjectのアップロード 以下のSDKメソッドはラッパーとして機能し、複数のステップを使用せずにマルチパートアップロード操作全体が実行されます。この方法を使用すると、オブジェクトは複数のパーツに分割され、複数のパーツとしてBucketにアップロードされ、すべてのパーツがアップロードされると結合されます。 ```javascript 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参照は、[コンポーネントインスタンス](https://docs.catalyst.zoho.com/ja/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/)です。 > **Info:** このSDKメソッドを使用するには、**Admin**スコープで初期化する必要があります。この要件の詳細については、この[セクション](https://docs.catalyst.zoho.com/ja/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes)をご覧ください。 **使用パラメータ**
| Parameter Name | Data Type | Definition |
|---|---|---|
| `key` | **String** | **必須**パラメータです。オブジェクトの完全な名前と[パス](https://docs.catalyst.zoho.com/ja/cloud-scale/help/stratus/objects/introduction/#path)を保持します。 |
| `urlAction` | **Request Method** | **必須**パラメータです。アップロード(PUT)アクション用の署名付きURLを生成するためのパラメータです。
|
| `expiry` | **String** | **任意**パラメータです。URLの有効時間(秒単位)。
|
| `activeFrom` | **String** | **任意**パラメータです。URLが有効になる時間を含みます。最大値は**7日**です。デフォルトでは、URLは生成されるとすぐに有効になります。 |