全部产品
Search
文档中心

Object Storage Service:Range download (PHP SDK V1)

更新时间:Nov 30, 2025

Jika Anda hanya memerlukan sebagian data dalam suatu file, Anda dapat melakukan range download untuk mengambil data dalam rentang yang ditentukan.

Catatan

  • Pada topik ini, digunakan titik akhir publik wilayah China (Hangzhou). Untuk mengakses OSS dari layanan Alibaba Cloud lainnya di 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 dengan menggunakan titik akhir OSS. Jika Anda ingin membuat instans OSSClient menggunakan nama domain kustom atau Security Token Service (STS), lihat Create an OssClient.

  • Untuk melakukan range download, Anda harus memiliki izin oss:GetObject. Untuk informasi selengkapnya, lihat Grant custom access policies to a RAM user.

Kode contoh

Kode berikut mengunduh byte 0 hingga 4 dari suatu file ke memori lokal:

<?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;

// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
$provider = new EnvironmentVariableCredentialsProvider();
// Titik akhir China (Hangzhou) digunakan sebagai contoh. Gantilah dengan titik akhir Anda yang sebenarnya.
$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
$bucket= "yourBucketName";
$object = "yourObjectName";
// Ambil 5 byte data dari byte 0 hingga byte 4, termasuk batasnya. Jika rentang yang ditentukan tidak valid, misalnya posisi awal atau akhir bernilai negatif atau lebih besar dari ukuran file, seluruh file akan diunduh.
$options = array(OssClient::OSS_RANGE => '0-4');
try{
    $config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,
        "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
        "region"=> "cn-hangzhou"
    );
    $ossClient = new OssClient($config);

    $content = $ossClient->getObject($bucket, $object, $options);
} catch(OssException $e) {
    printf(__FUNCTION__ . ": FAILED\n");
    printf($e->getMessage() . "\n");
    return;
}
print ($content);
print(__FUNCTION__ . ": OK" . "\n");