All Products
Search
Document Center

Object Storage Service:Unduh objek (OSS SDK for Java 1.0)

Last Updated:Aug 22, 2026

Secara default, ketika Anda memanggil operasi GetObject pada suatu objek di bucket yang telah diaktifkan fitur Pengendalian versi, hanya versi terkini objek tersebut yang dikembalikan.

Catatan penggunaan

  • Topik ini menggunakan titik akhir publik wilayah China (Hangzhou). Untuk mengakses OSS dari layanan Alibaba Cloud lainnya dalam wilayah yang sama, gunakan titik akhir internal. Untuk informasi selengkapnya mengenai wilayah dan titik akhir yang didukung, lihat Regions and endpoints.

  • Kredensial akses pada topik ini diperoleh dari Variabel lingkungan. Untuk informasi selengkapnya, lihat 配置访问凭证.

  • Topik ini menunjukkan cara membuat instans OSSClient dengan titik akhir OSS. Untuk konfigurasi alternatif, seperti menggunakan domain kustom atau melakukan autentikasi dengan kredensial dari Security Token Service (STS), lihat Client configuration.

  • Untuk mengunduh objek, Anda harus memiliki izin oss:GetObject. Untuk informasi selengkapnya, lihat Grant a custom policy.

Informasi latar belakang

Ketika Anda memanggil operasi GetObject untuk mengunduh objek dari bucket, Anda mungkin memperoleh salah satu hasil berikut:

  • Jika versi terkini objek merupakan penanda hapus, OSS mengembalikan respons 404 Not Found.

  • Jika ID versi objek ditentukan dalam permintaan, OSS mengembalikan versi objek yang dimaksud. Jika ID versi disetel ke null dalam permintaan, OSS mengembalikan versi yang memiliki ID versi bernilai null.

  • Jika ID versi yang ditentukan dalam permintaan merupakan ID versi dari penanda hapus, OSS mengembalikan respons 405 Method Not Allowed.

Contoh

Kode contoh berikut menunjukkan cara mengunduh objek:

import com.aliyun.oss.ClientBuilderConfiguration;
import com.aliyun.oss.OSS;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.*;
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Demo {
    public static void main(String[] args) {
        // Pada contoh ini, digunakan titik akhir wilayah China (Hangzhou). Tentukan titik akhir aktual Anda.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan nama bucket. Contoh: examplebucket.
        String bucketName = "examplebucket";
        // Tentukan path lengkap objek. Contoh: exampledir/exampleobject.txt. Jangan sertakan nama bucket dalam path lengkap.
        String objectName = "exampledir/exampleobject.txt";
        // Tentukan ID versi objek. Contoh: CAEQARiBgID8rumR2hYiIGUyOTAyZGY2MzU5MjQ5ZjlhYzQzZjNlYTAyZDE3****.
        String versionid = "CAEQARiBgID8rumR2hYiIGUyOTAyZGY2MzU5MjQ5ZjlhYzQzZjNlYTAyZDE3****";
        // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), setel wilayah menjadi cn-hangzhou.
        String region = "cn-hangzhou";

        // Buat instans OSSClient.
        // Panggil metode shutdown untuk melepaskan sumber daya ketika OSSClient tidak lagi digunakan.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
        OSS ossClient = OSSClientBuilder.create()
        .endpoint(endpoint)
        .credentialsProvider(credentialsProvider)
        .clientConfiguration(clientBuilderConfiguration)
        .region(region)               
        .build();
        
        try {
            // Bungkus permintaan GetObject.
            GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, objectName);            
            getObjectRequest.setVersionId(versionid);
            // ossObject menentukan nama bucket, nama objek, metadata objek, dan aliran input.
            OSSObject ossObject = ossClient.getObject(getObjectRequest);

            // Tampilkan ID versi objek yang diunduh.
            System.out.println("Get Object versionid:" +  ossObject.getObjectMetadata().getVersionId());
            // Tampilkan konten objek dengan ID versi tertentu.
            System.out.println("Object content:");
            BufferedReader reader = new BufferedReader(new InputStreamReader(ossObject.getObjectContent()));
            while (true) {
                String line = reader.readLine();
                if (line == null) break;
                System.out.println("\n" + line);
            }

        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (Throwable ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        } finally {
            // Matikan instans OSSClient.
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}            

Untuk informasi selengkapnya mengenai operasi API yang dapat Anda panggil untuk mengunduh objek, lihat GetObject.