Secara default, pemanggilan operasi GetObject pada bucket yang telah diaktifkan fitur Pengendalian versi hanya mengembalikan versi terkini dari suatu objek.
Perhatian
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.
Pada topik ini, instans OSSClient dibuat menggunakan titik akhir OSS. Jika Anda ingin membuat instans OSSClient dengan nama domain kustom atau Security Token Service (STS), lihat Create an OssClient.
Untuk mengunduh file, Anda harus memiliki izin
oss:GetObject. Untuk informasi selengkapnya, lihat Grant custom permissions to a RAM user.
Informasi latar belakang
Ketika Anda memanggil operasi GetObject pada suatu bucket, salah satu dari tiga skenario berikut akan terjadi:
Jika versi terkini objek dalam bucket tersebut adalah penanda hapus, OSS mengembalikan respons 404 Not Found.
Jika Anda menentukan ID versi objek dalam parameter kueri, OSS mengembalikan versi objek tersebut. Jika Anda mengatur ID versi ke "null", OSS mengembalikan versi objek yang memiliki ID versi "null".
Jika Anda mencoba mengambil penanda hapus dengan menentukan ID versinya, OSS mengembalikan respons 405 Method Not Allowed.
Kode contoh
Kode berikut menunjukkan cara mengunduh file:
<?php
if (is_file(__DIR__ . '/../autoload.php')) {
require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
require_once __DIR__ . '/../vendor/autoload.php';
}
use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\CoreOssException;
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
$provider = new EnvironmentVariableCredentialsProvider();
// Titik akhir diatur ke China (Hangzhou) pada contoh ini. Atur titik akhir sesuai wilayah Anda.
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
$bucket= "<yourBucketName>";
// Tentukan path lengkap objek. Path lengkap tidak mencakup nama bucket. Contoh: example/test.txt.
$object = "<yourObjectName>";
// Tentukan ID versi objek.
$versionId = "<yourObjectVersionId>";
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
"signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
"region"=> "cn-hangzhou"
);
$ossClient = new OssClient($config);
try{
// Unduh objek dengan versi yang ditentukan.
$content = $ossClient->getObject($bucket, $object, array(OssClient::OSS_VERSION_ID => $versionId));
print($content);
} catch(OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
print(__FUNCTION__ . ": OK" . "\n"); Untuk informasi selengkapnya, lihat GetObject.