--- title: "オブジェクトのアップロード" url: https://docs.catalyst.zoho.com/ja/sdk/java/v1/cloud-scale/stratus/upload-object/ description: "このページでは、バケットにオブジェクトをアップロードするためのJava 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: "Node.js SDK" url: /ja/sdk/nodejs/v2/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 --- # オブジェクトのアップロード このセクションに記載されているSDKメソッドを使用すると、さまざまな方法で[バケット](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/java/v1/cloud-scale/stratus/create-bucket-instance/)です。 オブジェクトに対して[バージョニング](https://docs.catalyst.zoho.com/ja/cloud-scale/help/stratus/stratus-config/general-settings/#versioning)が有効になっていない場合、Stratusが同じオブジェクトに対して複数の書き込みリクエストを受け取ると、オブジェクトは継続的に上書きされます。最新のアップロードのオブジェクトのみが保存されます。 ただし、バージョニングを有効にすると、各アップロードはオブジェクトのバージョンとみなされ、すべてが一意の`versionId`とともにバケットに保存されます。 > **Note:** パスまたはオブジェクトを作成する際、スペースを含む以下の文字はサポートされていません:ダブルクォート、両方の山括弧、ハッシュタグ、バックスラッシュ、パイプ記号。 ### ストリームとしてオブジェクトをアップロード このSDKメソッドを使用して、ストリームとしてバケットにオブジェクトをアップロードできます。ストリームを変数に格納してから、その変数をアップロードメソッドに渡します。 #### サンプルコードスニペット **Package Imports** ```java import com.zc.component.stratus.beans.ZCPutObjectOptions; import java.nio.file.Path; import java.nio.file.Files; import java.nio.file.StandardCopyOption; import java.io.*; ``` ```java InputStream file =new FileInputStream("filePath"); Boolean res = bucket.putObject("sam/out/sample.txt", file); System.out.println(res); ``` ### 文字列としてオブジェクトをアップロード このSDKメソッドを使用して、オブジェクトを文字列としてアップロードできます。アップロードメソッド`putObject()`にオブジェクト名とオブジェクトに格納するデータを文字列形式で渡します。 #### サンプルコードスニペット **Package Imports** ```java import com.zc.component.stratus.beans.ZCPutObjectOptions; import java.nio.file.Path; import java.nio.file.Files; import java.nio.file.StandardCopyOption; import java.io.*; ``` ```java Boolean res = bucket.putObject("sam/out/sample.txt", "content of the file"); System.out.println(res); ``` ### オプション付きでオブジェクトをアップロード このSDKメソッドを使用して、オブジェクトのアップロード時に以下のオプションを使用できます。 * `setOverwrite()`:バケットの*バージョニング*が有効になっていない場合に使用できるオプションです。バージョニングなしでリソースを上書きする場合にこのオプションを使用する必要があります。デフォルト値は「**false**」です。 * `setTTL()`:オブジェクトの**Time-to-Live**(TTL)を秒単位で設定するためのオプションです。値は**60秒**以上である必要があります。 * `setMetaData()`:アップロードするオブジェクトの[メタ詳細](https://docs.catalyst.zoho.com/ja/cloud-scale/help/stratus/objects/introduction/#metadata)をアップロードするためのオプションです。 * `contentType`:オブジェクトのMIMEタイプを設定する必要がある場合に使用できるオプションです。 #### サンプルコードスニペット **Package Imports** ```java import com.zc.component.stratus.beans.ZCPutObjectOptions; import java.nio.file.Path; import java.nio.file.Files; import java.nio.file.StandardCopyOption; import java.util.Map; import java.io.*; ``` ```java ZCPutObjectOptions options = ZCPutObjectOptions.getInstance(); options.setTTL("1000"); options.setOverwrite("true"); Map<String, String> metaData = new HashMap<String, String>(); metaData.put("author", "John"); options.setMetaData(metaData); InputStream file = new FileInputStream("filePath"); Boolean res = bucket.putObject("sam/out/sample.txt", file, options); System.out.println(res); ``` ### 展開オプション付きでオブジェクトをアップロード `putZipObject()` SDKメソッドを使用してZipオブジェクトをアップロードすると、Zip内のオブジェクトが展開されてアップロードされます。 #### サンプルコードスニペット **Package Imports** ```java import com.zc.component.stratus.ZCBucket; import com.zc.component.stratus.ZCStratus; import com.zc.component.stratus.beans.ZCPutObjectOptions; ``` ```java ZCStratus stratus = ZCStratus.getInstance(); ZCBucket bucket = stratus.bucketInstance("sam1"); ZCPutObjectOptions options = ZCPutObjectOptions.getInstance(); options.setOverwrite("true"); InputStream stream = new FileInputStream("file_path"); JSONObject object = bucket.putZipObject("sam.zip", stream, options); ``` このSDKメソッドは`taskId`の値を返します。この値を使用して、こちらの[SDKメソッド](https://docs.catalyst.zoho.com/ja/sdk/java/v1/cloud-scale/stratus/extract-zipped-object/#get-zip-extraction-status)で展開のステータスを確認できます。 **レスポンス例** ```json { 'task_id': '1234263749' } ``` ### マルチパート操作によるオブジェクトのアップロード アップロードするオブジェクトが大きすぎてアップロードできない場合、マルチパート操作を実行できます。マルチパート操作では、オブジェクトを複数のパーツに分割し、より高速なアップロードを実行します。このSDKセクションでは、Stratusでオブジェクトのマルチパートアップロードを実行するために利用可能なすべてのSDKメソッドを説明します。 #### マルチパートアップロードの開始 以下のSDKメソッドを使用して、`uploadId`を返します。このIDにより、オブジェクトの複数のパーツをアップロードできます。 #### サンプルコードスニペット **Package Imports** ```java import com.zc.component.stratus.beans.ZCInitiateMultipartUpload; ``` ```java ZCInitiateMultipartUpload multipart = bucket.initiateMultipartUpload("sam/out/sample.txt"); ``` #### オブジェクトのパーツのマルチパートアップロードの実行 以下のSDKメソッドでは、オブジェクトの個々のパーツのアップロードを実行します。各パーツには**1から1000**の範囲の固有の`part_number`があります。これはパーツの順序を表しますが、これらのパーツは必ずしも順番にアップロードされるわけではありません。オブジェクトのすべてのパーツのアップロードが完了すると、これらのパーツは順番に結合されます。 **使用パラメータ**
パラメータ名 データ型 定義
`key` **String** **必須**パラメータです。オブジェクトの名前を保持します。
`uploadId` **String** **必須**パラメータです。この値はマルチパートアップロードの開始メソッドで返されます。
`part` **InputStream** **必須**パラメータです。オブジェクトパーツのデータを保持します。
`partNumber` **Int** **必須**パラメータです。アップロードされるパーツの順序を保持します。
#### サンプルコードスニペット **Package Imports** ```java import java.io.*; ``` ```java int partNumber = 1; InputStream part = new FileInputStream("filePath"); Boolean res = bucket.uploadPart("sam/out/sample.txt", "uploadId", part, partNumber); System.out.println(res); ``` #### マルチパートアップロードのサマリー取得 以下のSDKメソッドを使用して、アップロードされたすべてのパーツの操作サマリーを取得できます。サマリーを表示するには、`getMultipartUploadSummary()`メソッドに`uploadId`を渡します。 #### サンプルコードスニペット **Package Imports** ```java import com.zc.component.stratus.beans.ZCMultipartObjectSummary; ``` ```java ZCMultipartObjectSummary summaryRes = bucket.getMultipartUploadSummary("sam/out/sample.txt", "uploadId"); // アップロード済みパーツにアクセスする System.out.println("Object Name:" + summaryRes.getKey()); System.out.println("Upload Id:" + summaryRes.getUploadId()); System.out.println("Status:" + summaryRes.getStatus()); System.out.println(summaryRes.getParts().get(0).getUploadedAt()); System.out.println(summaryRes.getParts().get(0).getPartNumber()); ``` #### マルチパートアップロード操作の完了 以下のメソッドを使用すると、すべてのパーツが正常にアップロードされた後にマルチパートプロセスを終了できます。プロセスを完了するには、`completeMultipartUpload()`メソッドに`uploadId`を渡します。 ```java Boolean completeRes = bucket.completeMultipartUpload("sam/out/sample.txt", "uploadId"); System.out.println(completeRes); ``` #### マルチパート操作の実装を示すサンプルスニペット #### サンプルコードスニペット **Package Imports** ```java import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.logging.Logger; import java.util.logging.Level; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.catalyst.advanced.CatalystAdvancedIOHandler; import com.zc.component.stratus.ZCBucket; import com.zc.component.stratus.ZCStratus; import com.zc.component.stratus.beans.ZCInitiateMultipartUpload; import com.zc.exception.ZCServerException; import java.io.InputStream; import java.io.FileInputStream; import java.io.ByteArrayInputStream; ``` ```java public class MultipartUpload implements CatalystAdvancedIOHandler { private static final Logger LOGGER = Logger.getLogger(Sample.class.getName()); @Override public void runner(HttpServletRequest request, HttpServletResponse response) throws Exception { try { switch (request.getRequestURI()) { case "/": { ZCStratus stratus = ZCStratus.getInstance(); // バケットインスタンスを取得する ZCBucket bucket = stratus.bucketInstance("sample"); // マルチパートアップロード String key = "sample.mp4"; InputStream file = new FileInputStream( "/users/sam/sample.mp4"); ZCInitiateMultipartUpload initiateUploadResponse = bucket.initiateMultipartUpload(key); String uploadId = initiateUploadResponse.getUploadId(); System.out.println("Multipart upload initiated. Upload ID: " + uploadId); // ファイルサイズとパートサイズ(最小50 MB) int partSize = 50 * 1024 * 1024; // 50 MB long fileSize = file.available(); double result = (double) fileSize / partSize; int noOfParts = (int) Math.ceil(result); // パーツを並列でアップロードする List<CompletableFuture<Void>> uploadedParts = new ArrayList<>(); ExecutorService executor = Executors.newFixedThreadPool(4); int partNumber = 1; while (noOfParts >= partNumber) { int currentPartNumber = partNumber; byte[] buffer = new byte[partSize]; file.read(buffer); InputStream fileData = new ByteArrayInputStream(buffer); uploadedParts.add(CompletableFuture.runAsync(() -> { try { bucket.uploadPart(key, uploadId, fileData, currentPartNumber); LOGGER.log(Level.INFO, "Part {0} Uploaded", currentPartNumber); } catch (Exception e) { throw new RuntimeException(e); } }, executor)); partNumber++; } CompletableFuture<Void> isUploaded = CompletableFuture .allOf(uploadedParts.toArray(new CompletableFuture[0])); try { isUploaded.get(); } catch (Exception e) { throw new ZCServerException("Error while uploading the object", e); } Boolean completeRes = bucket.completeMultipartUpload(key, uploadId); if (completeRes) { LOGGER.log(Level.INFO, "Upload Completed"); } } default: { response.setStatus(404); response.getWriter().write("You might find the page you are looking for at \"/\" path"); } } } catch (Exception e) { if (e instanceof ZCServerException) { int statusCode = ((ZCServerException) e).getStatus(); System.out.println("HTTP status code: " + statusCode); } LOGGER.log(Level.SEVERE, "Exception in Sample", e); } } } ``` ### Transfer Managerを使用したオブジェクトのアップロード #### Transfer Managerインスタンスの作成 #### サンプルコードスニペット **Package Imports** ```java import com.zc.component.stratus.transfer.ZCTransferManager; ``` ```java ZCTransferManager transferManager= ZCTransferManager.getInstance(bucket); ``` #### マルチパートアップロード **マルチパートアップロードインスタンスの作成** 以下のSDKメソッドは、マルチパートアップロードを開始してマルチパートインスタンスを作成します。 #### サンプルコードスニペット **Package Imports** ```java import com.zc.component.stratus.beans.ZCMultipartUpload; ``` ```java ZCMultipartUpload multipart = transferManager.createMultipartInstance("sam/out/sample.txt"); ``` 既に初期化されたマルチパートアップロード操作用のインスタンスを作成する必要がある場合は、以下のコードスニペットをコピーして使用してください。 ```java ZCMultipartUpload multipart = transferManager.createMultipartInstance("sam/out/sample.txt", "uploadId"); ``` #### パーツのアップロード 以下のSDKメソッドでは、*マルチパートアップロードインスタンスの作成*セクションで初期化した`multipart`インスタンスを使用します。 #### サンプルコードスニペット **Package Imports** ```java import java.io.InputStream; ``` ```java int partNumber = 1; InputStream part = new FileInputStream("filePath"); Boolean uploadRes = multipart.uploadPart(part, partNumber); System.out.println(uploadRes); ``` #### アップロードサマリー #### サンプルコードスニペット **Package Imports** ```java import com.zc.component.stratus.beans.ZCMultipartObjectSummary; ``` ```java ZCMultipartObjectSummary summaryRes = multipart.getUploadSummary(); // アップロード済みパーツにアクセスする System.out.println("Object Name:" + summaryRes.getKey()); System.out.println("Upload Id:" + summaryRes.getUploadId()); System.out.println("Status:" + summaryRes.getStatus()); System.out.println(summaryRes.getParts().get(0).getUploadedAt()); System.out.println(summaryRes.getParts().get(0).getPartNumber()); System.out.println(summaryRes.getParts().get(0).getSize()); ``` #### アップロードの完了 ```java Boolean completeRes = multipart.completeUpload(); System.out.println(completeRes); ``` #### ラッパーを使用したオブジェクトのアップロード 以下のSDKメソッドはラッパーとして機能し、複数のステップを実行することなくマルチパートアップロード操作全体を実行します。このメソッドを使用すると、オブジェクトが複数のパーツに分割され、複数のパーツでバケットにアップロードされ、すべてのパーツがアップロードされると結合されます。 ```java import java.io.InputStream; import com.zc.component.stratus.beans.ZCMultipartObjectSummary; ``` ```java InputStream file =new FileInputStream("filePath"); int partSize = 50; ZCMultipartObjectSummary res = transferManager.putObjectAsParts("objetName", file, partSize); ``` > **Note:** **2GB**を超えるオブジェクトの場合、マルチパートアップロード操作を正常に実行するために個々のSDKメソッドを使用することをお勧めします。 ### オブジェクトアップロード用のPresigned URLの生成 Presigned URLは、認証済みユーザーが非認証ユーザーと共有できる安全なURLです。このURLにより、非認証ユーザーにオブジェクトへのアクセスに対する一時的な認可が提供されます。以下のコードスニペットで使用されているBucket参照は、[コンポーネントインスタンス](https://docs.catalyst.zoho.com/ja/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/)です。 > **Info:** この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` **Enum** **必須**パラメータです。アップロードアクション用のPresigned URLを生成するためのパラメータです。
  • `URL_ACTION.PUT`:オブジェクトをアップロードする場合
`expiry` **String** **任意**パラメータです。URLの有効時間(秒単位)。
  • デフォルト値:**3600秒**
  • 最小値:**30秒**
  • 最大値:**7日**
`activeFrom` **String** **任意**パラメータです。このパラメータには、URLが有効になるまでの時間を指定します。最大値は**7日**です。デフォルトでは、URLは生成されるとすぐにアクティブになります。
#### サンプルコードスニペット **Package Imports** ```java import com.zc.component.stratus.enums.URL_ACTION; import org.json.simple.JSONObject; ``` ```java JSONObject res = bucket.generatePreSignedUrl("sam/out/sample.txt", URL_ACTION.PUT); System.out.println(res.get("signature")); ``` ### 有効期限およびアクティブ時間付きPresigned URLの生成 #### サンプルコードスニペット **Package Imports** ```java import com.zc.component.stratus.enums.URL_ACTION; import org.json.simple.JSONObject; ``` ```java JSONObject res = bucket.generatePreSignedUrl("object_name",URL_ACTION.GET, "expiry_in","active_from"); System.out.println(res.get("signature")); ``` **アップロード用Presigned URLの生成のレスポンス例** ```json { "signature": "https://sadi-development.zohostratus.com/_signed/sam.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747904989454&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=UPyH5A4AdAaCpw6S6jVhKFSxg3B0B0p619YN0cAIn4c", "expiry_in_seconds": "100", "active_from": "1726492859577" } ``` **Presigned URLを使用したオブジェクトアップロードの使用例スニペット** **Package Imports** ```java import okhttp3.*; import java.io.File; import java.io.IOException; ``` ```java public class BinaryFileUpload { public static void main(String[] args) throws IOException { // HTTPリクエスト用のOkHttpClientインスタンスを作成する OkHttpClient client = new OkHttpClient(); // アップロードするファイルを指定する。「file_path」を実際のファイルの場所に置き換えてください File file = new File("file_path"); // バイナリコンテンツ(octet-stream)でリクエストボディを作成する RequestBody requestBody = RequestBody.create( MediaType.parse("application/octet-stream"), // 既知の場合は特定のMIMEタイプを使用 file ); // ️ 署名付きURLでPUTリクエストを構築する Request request = new Request.Builder() .url("https://sadi-development.zohostratus.com/_signed/sam.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747904989454&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=UPyH5A4AdAaCpw6S6jVhKFSxg3B0B0p619YN0cAIn4c") // Replace with a actual URL .put(requestBody) // ファイルをアップロードするPUTリクエスト .build(); // リクエストを実行してレスポンスを処理する try (Response response = client.newCall(request).execute()) { if (response.isSuccessful()) { System.out.println("Object uploaded successfully"); } else { // アップロード失敗時にエラーを表示する System.err.println("Error: " + response.code() + " - " + response.body().string()); } } } } ```