--- title: "オブジェクトのアップロード" url: https://docs.catalyst.zoho.com/ja/sdk/python/v1/cloud-scale/stratus/upload-object/ description: "このページでは、バケットにオブジェクトをアップロードするためのPython SDKメソッドを説明します。" last_updated: 2026-08-06T05:54:02Z service: Cloud Scale type: general related_links: - name: "Stratusコンポーネントヘルプドキュメント" url: /ja/cloud-scale/help/stratus/introduction - name: "オブジェクトのアップロードヘルプドキュメント" url: /ja/cloud-scale/help/stratus/objects/upload-object/ - name: "Java SDK" url: /ja/sdk/java/v1/cloud-scale/stratus/upload-object/ - name: "Node.js SDK" url: /ja/sdk/nodejs/v2/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 --- # オブジェクトのアップロード このセクションに記載されているSDKメソッドを使用すると、さまざまな方法で[オブジェクトをアップロード](https://docs.catalyst.zoho.com/ja/cloud-scale/help/stratus/objects/upload-object/)して[バケット](https://docs.catalyst.zoho.com/ja/cloud-scale/help/stratus/buckets/name-bucket/)に保存できます。オブジェクトは**文字列**または**ストリーム**としてアップロードできます。以下のコードスニペットで使用されているBucketの参照は、[コンポーネントインスタンス](https://docs.catalyst.zoho.com/ja/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/)です。 オブジェクトに対して[バージョニング](https://docs.catalyst.zoho.com/ja/cloud-scale/help/stratus/stratus-config/general-settings/#versioning)を有効にしていない場合、Stratusが同じオブジェクトに対して複数の書き込みリクエストを受け取ると、オブジェクトは継続的に上書きされます。最後にアップロードされたオブジェクトのみが保存されます。 ただし、バージョニングを有効にすると、各アップロードはオブジェクトのバージョンとして扱われ、すべてが一意の`version_id`を持つバケットに保存されます。 > **注意:** パスやオブジェクトを作成する際、スペースを含む以下の文字はサポートされていません:ダブルクォート、両方の山括弧、ハッシュタグ、バックスラッシュ、パイプ記号。 ### ストリームとしてオブジェクトをアップロード このSDKメソッドを使用すると、ストリームとしてバケットにオブジェクトをアップロードできます。ストリームを変数に格納し、その変数をアップロードメソッドに渡します。 ```python file = open('file_path','rb') res = bucket.put_object("sam/out/sample.txt",file) print(res) ``` ### 文字列としてオブジェクトをアップロード このSDKメソッドを使用すると、文字列としてオブジェクトをアップロードできます。アップロードメソッド`put_object()`にオブジェクト名と、文字列形式で保存するデータを渡します。 ```python res = bucket.put_object("sam/out/sample.txt",'content of the file') print(res) ``` ### オプション付きでオブジェクトをアップロード このSDKメソッドを使用すると、オブジェクトをアップロードする際に以下のオプションを使用できます。 * `overwrite`: バケットの*バージョニング*が有効になっていない場合に使用できるオプションです。バージョニングなしでリソースを上書きする場合は、このオプションを使用する必要があります。デフォルト値は「**false**」です。 * `ttl`: オブジェクトの**Time-to-Live**(TTL)を秒単位で設定するために使用できるオプションです。値は**60秒**以上である必要があります。 * `meta_data`: アップロードするオブジェクトの[メタ詳細](https://docs.catalyst.zoho.com/ja/cloud-scale/help/stratus/objects/introduction/#metadata)をアップロードするために使用できるオプションです。 * `content_type`: オブジェクトのMIMEタイプを設定する必要がある場合に使用できるオプションです。 ```python options = { 'overwrite': 'true', 'ttl': '300', #有効期限を秒単位で指定する 'meta_data': { 'author': 'John' } } file = open('file_path','rb') res = bucket.put_object("sam/out/sample.txt",file, options) print(res) ``` ### 展開オプション付きでオブジェクトをアップロード 以下のメソッドを使用してzipファイルをアップロードすると、zipファイルが展開され、オブジェクトがバケットにアップロードされます。 ```python # extract_uploadを含むアップロードオプションを定義する options = { # オブジェクトが既に存在する場合は上書きする 'overwrite': 'true', # オブジェクトが期限切れになるまでの有効期間(秒) 'ttl': '300', # ZIPファイルの内容を自動的に展開する 'extract_upload': 'true', # オブジェクトのMIMEタイプ 'content-type': 'application/zip', # オブジェクトに関連付けられたカスタムメタデータ 'meta_data': { 'author': 'Sam' } } #バイナリモードでファイルを開く file = open('sam.zip', 'rb') #ZIPの内容をアップロードして展開する res = bucket.put_object('sam/sample.zip', file, options) ``` このSDKメソッドは`task_id`を返します。この`task_id`を[こちらのSDKメソッド](https://docs.catalyst.zoho.com/ja/sdk/python/v1/cloud-scale/stratus/extract-zipped-object/#get-zip-extraction-status)で使用して、展開のステータスを確認できます。 **レスポンス例** ```json { 'task_id': '1234263749' } ``` ### マルチパートを使用したオブジェクトのアップロード このセクションでは、Stratus内のバケットに大きなオブジェクトを正常にアップロードするためのSDKメソッドについて説明します。 マルチパートアップロード機能は、複数のHTTPSリクエストで大きなファイルをバケットにアップロードします。すべての個別パーツがアップロードされると、これらのリクエストはすべて単一のオブジェクトに統合されます。 > **注意:** **100 MB以上**のオブジェクトをアップロードする場合は、**マルチパートアップロード**を推奨方法として検討することをお勧めします。 #### マルチパートアップロードの開始 マルチパート操作を実行するには、マルチパートオブジェクトインスタンスを取得する必要があります。Stratus内のバケットに保存されているオブジェクトに対するマルチパート操作を実行するさまざまなコードスニペットで、このコンポーネントインスタンスを参照します。 **使用するパラメータ** `bucket`: [こちらのSDKメソッド](https://docs.catalyst.zoho.com/ja/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/)を使用して事前に初期化したバケットインスタンスです。 ```python init_res = bucket.initiate_multipart_upload(key="") print(init_res) ``` **レスポンス例** ```json { bucket: 'zcstratus123-development', key: 'objectName.txt', upload_id: '01j7xbm4vm5750zbedxqgc4q6m', status: 'PENDING' } ``` #### オブジェクトのパーツのアップロード 以下のSDKメソッドでは、オブジェクトの個々のパーツのアップロードを実行します。各パーツには1から1000の範囲の固有のpartNumberがあります。これはパーツの順序を表しますが、これらのパーツは必ずしも順番にアップロードされるわけではありません。すべてのパーツのアップロードが完了すると、これらのパーツは順序通りに統合されます。 ```python upload_res = bucket.upload_part(key="",upload_id="", part_number=3, body=open('file_path','rb')) print(upload_res) ``` #### マルチパートアップロードのサマリー取得 以下のSDKメソッドを使用すると、アップロードされたすべてのパーツの操作サマリーを取得できます。サマリーを表示するには、`get_multipart_upload_summary()`メソッドを使用します。 ```python summary_res = bucket.get_multipart_upload_summary(key="", upload_id="") print(summary_res) ``` **レスポンス例** ```json { "bucket": "zcstratus12345-development", "key": "sasm.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 } ] } ``` #### オブジェクトのマルチパートアップロードの完了 以下のメソッドを使用すると、すべてのパーツが正常にアップロードされた後にマルチパートプロセスを終了できます。プロセスを完了するには、`complete_multipart_upload()`メソッドにuploadIdを渡します。 ```python complete_res = bucket.complete_multipart_upload(key="", upload_id="") print(complete_res) ``` **SDK実装例** **Package Imports** ```java from concurrent.futures import ThreadPoolExecutor import zcatalyst_sdk ``` ```python def handler(request: Request): app = zcatalyst_sdk.initialize() if request.path == "/": # Stratusインスタンス stratus = app.stratus() # バケットインスタンス bucket = stratus.bucket('bucket_name') # マルチパートアップロード key = "sam/out/sample.txt" file_path = '/sam/smple.mp4' initiate_res = bucket.initiate_multipart_upload(key) part_number = 1 part_size = 50 * 1024 * 1024 futures = [] try: with open(file_path, 'rb') as file: with ThreadPoolExecutor(max_workers=3) as executor: while True: chunk = file.read(part_size) if not chunk: break futures.append(executor.submit( bucket.upload_part, key, initiate_res['upload_id'], chunk, part_number ) ) part_number += 1 for future in futures: future.result() except Exception as err: raise err multipart_upload_res = bucket.complete_multipart_upload(key, initiate_res['upload_id']) return multipart_upload_res else: response = make_response('Unknown path') response.status_code = 400 return response ``` ### Transfer Managerを使用したオブジェクトのアップロード アップロードするオブジェクトが大きすぎてアップロードできない場合、Transfer Manager操作を実行できます。Transfer Manager操作はオブジェクトを複数のパーツに分割し、より高速なアップロードを実行します。このSDKセクションでは、Transfer Managerを使用してStratusにオブジェクトをアップロードするために利用可能なすべてのSDKメソッドについて説明します。 #### Transfer Managerインスタンスの取得 Transfer Manager操作を実行するには、Transfer Managerオブジェクトインスタンスを取得する必要があります。Stratus内のバケットに保存されているオブジェクトに対するTransfer Manager操作を実行するさまざまなコードスニペットで、このコンポーネントインスタンスを参照します。 **使用するパラメータ** `bucket`: [こちらのSDKメソッド](https://docs.catalyst.zoho.com/ja/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/)を使用して事前に初期化したバケットインスタンスです。 **以下のパッケージがインポートされていることを確認してください** **Package Imports** ```java from zcatalyst_sdk.stratus.transfer_manager import TransferManager ``` ```python transfer_manager = TranferManager(bucket) ``` #### Transfer Managerを使用したオブジェクトのアップロード このセクションでは、Stratus内のバケットに大きなオブジェクトを正常にアップロードするためのSDKメソッドについて説明します。 マルチパートアップロード機能は、複数のHTTPSリクエストで大きなファイルをバケットにアップロードします。すべての個別パーツがアップロードされると、これらのリクエストはすべて単一のオブジェクトに統合されます。 > **注意:** **100 MB以上**のオブジェクトをアップロードする場合は、**マルチパートアップロード**を推奨方法として検討することをお勧めします。 #### マルチパートインスタンスの作成 以下のSDKメソッドを使用して、`upload_id`を生成します。このIDを使用して、オブジェクトに対するマルチパート操作を実行できるインスタンスを作成して返します。 ```python init_ins = transfer_manager.create_multipart_instance(key="") ``` 既に初期化されたマルチパートアップロード操作のインスタンスを作成する必要がある場合は、以下のコードスニペットをコピーして使用してください。 ```python init_ins = transfer_manager.create_multipart_instance(key="", upload_id="") ``` #### オブジェクトのパーツのマルチパートアップロードの実行 以下のSDKメソッドでは、オブジェクトの個々のパーツのアップロードを実行します。各パーツには**1から1000**の範囲の固有の`part_number`があります。これはパーツの順序を表しますが、これらのパーツは必ずしも順番にアップロードされるわけではありません。すべてのパーツのアップロードが完了すると、これらのパーツは順序通りに統合されます。 **使用するパラメータ** * `part_number`: アップロードされるパーツの順序を保持します。 * `body`: オブジェクトのデータ/コンテンツを保持します。 ```python upload_res = init_ins.upload_part(body=open('file_path','rb'), part_number=3) print(upload_res) ``` #### マルチパートアップロードのサマリー取得 以下のSDKメソッドを使用すると、アップロードされたすべてのパーツの操作サマリーを取得できます。サマリーを表示するには、`get_upload_summary()`メソッドを使用します。 ```python summary_res = init_ins.get_upload_summary() print(summary_res) ``` #### オブジェクトのマルチパートアップロードの完了 以下のメソッドを使用すると、すべてのパーツが正常にアップロードされた後にマルチパートプロセスを終了できます。プロセスを完了するには、`complete_upload()`メソッドに`upload_id`を渡します。 ```python complete_res = init_ins.complete_upload() print(complete_res) ``` #### Transfer Managerの全機能をラップしたオブジェクトのアップロード 以下のSDKメソッドはラッパーとして機能し、Transfer Managerのアップロード操作全体を複数のステップを使用せずに実行します。このメソッドを使用すると、オブジェクトが複数のパーツに分割され、複数のパーツでバケットにアップロードされ、すべてのパーツがアップロードされると統合されます。 > **注意:** **2GBを超える**オブジェクトの場合は、マルチパートアップロード操作を正常に実行するために、**個別のSDKメソッド**を使用することをお勧めします。 ```python upload_res = transfer_res.put_object_as_parts(key='', body=open('file_path', 'rb'), part_size=50) print(upload_res) ``` ### オブジェクトアップロード用の署名付きURLの生成 署名付きURLは、認証済みユーザーが非認証ユーザーに共有できるセキュアなURLです。このURLは、非認証ユーザーにオブジェクトへのアクセスのための一時的な認可を提供します。以下のコードスニペットで使用されているBucketの参照は、[コンポーネントインスタンス](https://docs.catalyst.zoho.com/ja/sdk/python/v1/cloud-scale/stratus/create-bucket-instance/)です。 > **情報:** このSDKメソッドを使用するには、**Admin**スコープで初期化する必要があります。この要件の詳細については、[こちらのセクション](https://docs.catalyst.zoho.com/ja/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes)をご覧ください。 **使用するパラメータ**
パラメータ名 データ型 定義
`key` **String** 必須パラメータです。オブジェクトの[パス](https://docs.catalyst.zoho.com/ja/cloud-scale/help/stratus/objects/introduction/#path)を含む完全な名前を保持します。
`url_action` **Request Method** 必須パラメータです。アップロード(PUT)アクション用の署名付きURLを生成するためのパラメータです。
  • `PUT`: オブジェクトをアップロードする場合
`expiry` **String** 任意パラメータです。URLの有効期間(秒単位)です。
  • デフォルト値: **3600秒**
  • 最小値: **30秒**
  • 最大値: **7日間**
`active_from` **String** 任意パラメータです。URLが有効になる時刻を保持します。最大値は**7日間**です。デフォルトでは、URLは生成されるとすぐに有効になります。
```python pre_signed_url_res = bucket.generate_presigned_url("sam/out/sample.txt",url_action='PUT',expiry_in_sec='300', active_from='1023453725828') print(pre_signed_url_res) ``` **アップロード用署名付きURL生成のレスポンス例** ```json { "signature": "https://sadi-development.zohostratus.com/_signed/code.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747899245773&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=YBPoNE9txCIUWWX3ntdgVd95VTt1jGFlSuvnTRFbCMQ" file_path = "/Users/ranjitha-18338/Documents/Pyhton-SDK/stratus/output.txt", "expiry_in_seconds": "300", "active_from": "1726492859577" } ``` **署名付きURLを使用したオブジェクトアップロードのスニペット例** **Package Imports** ```java import requests ``` ```python #実際の署名付きURLに置き換える url = "https://sadi-development.zohostratus.com/_signed/code.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747899245773&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=YBPoNE9txCIUWWX3ntdgVd95VTt1jGFlSuvnTRFbCMQ" #アップロードするローカルファイルのパス file_path = "file_path" #必須ヘッダーを設定する headers = { # 'Content-Type': 'text/plain', # ファイルのコンテンツタイプを指定する # 'overwrite': 'true', # 上書きを示すオプションのカスタムヘッダー(サーバーで必要な場合) } #バイナリ読み取りモードでファイルを開き、PUTリクエストを送信してアップロードする with open(file_path, 'rb') as f: files = {'file': f} #ファイルペイロードを作成する response = requests.put(url, headers=headers, files=files) #レスポンスステータスを確認する if response.status == 200: print('Object uploaded successfully') else: print('Object upload failed') ```