お知らせ:

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

オブジェクトのダウンロード

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

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

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

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

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

サンプルコードスニペット


Package Imports
copy
import java.nio.file.Path;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;
import java.io.*;
copy
InputStream dataStream = bucket.getObject("sam/out/sample.txt");
// オブジェクトをローカルマシンにダウンロードする
Path path = Path.of("file_path");  // ダウンロードしたオブジェクトを保存するパスを指定する
Files.copy(dataStream, path, StandardCopyOption.REPLACE_EXISTING);

オブジェクトの一部をダウンロード

以下のSDKはsetRange()メソッドを実装しています。このメソッドを使用すると、オブジェクトの特定のバイト範囲をダウンロードできます。

サンプルコードスニペット


Package Imports
copy
import com.zc.component.stratus.beans.ZCGetObjectOptions;
import java.nio.file.Path;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;
import java.io.*;
copy
// ダウンロードオプションを追加する
ZCGetObjectOptions options = ZCGetObjectOptions.getInstance();
options.setVersionId("3yt5ehjbjghds3i28");
options.setRange("20-200"); // オブジェクトのバイト単位の開始・終了範囲
InputStream dataStream = bucket.getObject("sam/out/sample.txt", options);
// オブジェクトをローカルマシンにダウンロードする
Path path = Path.of("file_path"); // ダウンロードしたオブジェクトを保存するパスを指定する
Files.copy(dataStream, path, StandardCopyOption.REPLACE_EXISTING);

Transfer Managerを使用したオブジェクトのダウンロード

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

Transfer Managerインスタンスの作成

サンプルコードスニペット


Package Imports
copy
import com.zc.component.stratus.transfer.ZCTransferManager;
copy
ZCTransferManager transferManager= ZCTransferManager.getInstance(bucket);

イテラブルパーツストリームとしてオブジェクトをダウンロード

サンプルコードスニペット


Package Imports
copy
import java.nio.file.StandardOpenOption;
import java.nio.file.Files;
import java.util.Iterator;
import java.nio.file.Path;
import java.io.*;
copy
Iterable <InputStream> Iterable = transferManager.getIterableObject("sam/out/sample.txt", 100 L);
Path path = Path.of("file_path");
Iterator <InputStream> res = Iterable.iterator();
while (res.hasNext()) {
    InputStream data = res.next(); // オブジェクトの各パーツをストリームとして取得する
    Files.copy(data, path, StandardCopyOption.REPLACE_EXISTING); // ストリームをローカルファイルパスに書き込む
}

ダウンロード用のオブジェクトパーツの生成

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

使用パラメータ

  • PartSize:各パーツのサイズ(MB単位)
  • key:オブジェクトの名前を保持します

サンプルコードスニペット


Package Imports
copy
import java.nio.file.StandardOpenOption;
import java.nio.file.Files;
import com.zc.component.stratus.beans.ZCStratusGetObject;
import java.nio.file.Path;
import java.io.*;
copy
Path path = Path.of("file_path");
// パート関数のリストを取得する
List<ZCStratusGetObject> parts = transferManager.generatePartDownloaders("sam/out/sample.txt", 100L);
// ダウンロードしたストリームを保存するファイルを作成する。
Files.createFile(path);
int partNumber = 1;
// 各関数をトリガーしてオブジェクトパーツをダウンロードする
for (ZCStratusGetObject part : parts) {
// オブジェクトパーツをストリームとして取得する
 InputStream inputStream = part.getPart();
  System.out.println("Part "+ partNumber++ + " Downloaded");
// ストリームデータをローカルマシンに書き込む
  Files.write(path, inputStream.readAllBytes(), StandardOpenOption.APPEND);
}

オブジェクトダウンロード用のPresigned URLの生成

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

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

使用パラメータ

パラメータ名 データ型 定義
key String 必須パラメータです。オブジェクトの完全な名前とパスを保持します。
URL_ACTION Enum 必須パラメータです。ダウンロードアクション用のPresigned URLを生成するためのパラメータです。
  • URL_ACTION.GET:オブジェクトをダウンロードする場合
expiry String 任意パラメータです。URLの有効時間(秒単位)。
  • デフォルト値:3600秒
  • 最小値:30秒
  • 最大値:7日
activeFrom String 任意パラメータです。このパラメータには、URLが有効になるまでの時間を指定します。最大値は7日です。デフォルトでは、URLは生成されるとすぐにアクティブになります。

サンプルコードスニペット


Package Imports
copy
import com.zc.component.stratus.enums.URL_ACTION;
import org.json.simple.JSONObject;
copy
JSONObject res = bucket.generatePreSignedUrl("sam/out/sample.txt",URL_ACTION.GET);
System.out.println(res.get("signature"));

有効期限およびアクティブ時間付きPresigned URLの生成

サンプルコードスニペット


Package Imports
copy
import com.zc.component.stratus.enums.URL_ACTION;
import org.json.simple.JSONObject;
copy
JSONObject res = bucket.generatePreSignedUrl("object_name",URL_ACTION.GET, "expiry_in","active_from");
System.out.println(res.get("signature"));

ダウンロード用Presigned URLの生成のレスポンス例

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

Presigned URLを使用したオブジェクトアップロードの使用例スニペット

Package Imports
copy
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.ResponseBody;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
copy
public class Download {
    public static void main(String[] args) throws IOException {
        // HTTPリクエストを処理するOkHttpClientインスタンスを作成する
        OkHttpClient client = new OkHttpClient();
        // 署名付きURLでGETリクエストを構築する
        Request request1 = new Request.Builder()
                .url("https://sadi-development.zohostratus.com/_signed/sam.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747905744487&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=pCjV9xckDOqBCueE_gBeMbp12StddTghBK_8HUwU5k0") // Replace with your actual URL
                .build();
        // リクエストを実行してレスポンスを処理する
        try (Response response1 = client.newCall(request1).execute()) {
            // レスポンスが成功したかどうか確認する
            if (!response1.isSuccessful()) {
                throw new IOException("Unexpected code " + response1);
            }
            // レスポンスボディをInputStreamとして取得する
            ResponseBody body = response1.body();
            if (body != null) {
                // ファイルをディスクに書き込むストリームを作成する
                try (InputStream in = body.byteStream();
                     OutputStream out = new FileOutputStream("file_path")) { // file_pathを実際のパスに置き換えてください
                    // レスポンスデータをチャンクで読み取りファイルに書き込む
                    byte[] buffer = new byte[8192];
                    int len;
                    while ((len = in.read(buffer)) != -1) {
                        out.write(buffer, 0, len);
                    }
                    // ダウンロード成功後に確認メッセージを表示する
                    System.out.println("Download complete.");
                }
            }
        } catch (IOException e) {
            // ダウンロード中にエラーが発生した場合にスタックトレースを表示する
            e.printStackTrace();
        }
    }
}

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