全部产品
Search
文档中心

Object Storage Service:Melakukan unggah tambahan dengan menggunakan OSS SDK untuk PHP

更新时间:Aug 07, 2025

Anda dapat menambahkan konten ke objek tambahan yang sudah ada. Topik ini menjelaskan cara melakukan unggah tambahan menggunakan Object Storage Service (OSS) SDK untuk PHP.

Catatan

  • Kode contoh dalam topik ini menggunakan ID Wilayah cn-hangzhou dari Wilayah Hangzhou, Tiongkok. Secara default, titik akhir publik digunakan untuk mengakses sumber daya di bucket. Jika Anda ingin mengakses sumber daya di bucket dari layanan Alibaba Cloud lainnya di wilayah yang sama dengan bucket tersebut, gunakan titik akhir internal. Untuk informasi lebih lanjut tentang wilayah dan titik akhir yang didukung, lihat Wilayah dan titik akhir.

  • Unggah sederhana memerlukan izin oss:PutObject. Untuk informasi lebih lanjut, lihat Lampirkan kebijakan kustom ke Pengguna RAM.

  • Jika objek tempat Anda ingin menambahkan konten tidak ada, objek tambahan akan dibuat saat Anda memanggil operasi ini.

  • Jika objek tempat Anda ingin menambahkan konten ada:

    • Jika objek tersebut adalah objek tambahan dan posisi yang ditentukan dari mana operasi tambahan dimulai sama dengan panjangnya saat ini, konten akan ditambahkan ke akhir objek.

    • Jika objek tersebut adalah objek tambahan dan posisi yang ditentukan dari mana operasi tambahan dimulai tidak sama dengan panjangnya saat ini, kesalahan PositionNotEqualToLength akan dikembalikan.

    • Jika objek tersebut bukan objek tambahan, kesalahan ObjectNotAppendable akan dikembalikan.

  • Dalam topik ini, kredensial akses diperoleh dari variabel lingkungan. Untuk informasi lebih lanjut, lihat Konfigurasi kredensial akses.

Kode sampel

Gunakan metode AppendObject

<?php

// Impor file autoload untuk memuat pustaka dependensi.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Definisikan dan jelaskan parameter baris perintah.
$optsdesc = [
    "region" => ['help' => 'Wilayah tempat bucket berada.', 'required' => True], // (Diperlukan) Tentukan wilayah tempat bucket berada.
    "endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False], // (Opsional) Tentukan titik akhir untuk mengakses OSS.
    "bucket" => ['help' => 'Nama bucket', 'required' => True], // (Diperlukan) Tentukan nama bucket.
    "key" => ['help' => 'Nama objek', 'required' => True], // (Diperlukan) Tentukan nama objek.
];

// Ubah deskripsi menjadi daftar opsi panjang yang diperlukan oleh getopt.
// Tambahkan titik dua (:) di akhir setiap parameter untuk menunjukkan bahwa nilai diperlukan.
$longopts = \array_map(function ($key) {
    return "$key:";
}, array_keys($optsdesc));

// Analisis parameter baris perintah.
$options = getopt("", $longopts);

// Periksa apakah parameter yang diperlukan telah dikonfigurasi.
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help']; // Dapatkan informasi bantuan untuk parameter.
        echo "Error: argumen berikut diperlukan: --$key, $help" . PHP_EOL;
        exit(1); // Keluar dari program jika parameter yang diperlukan hilang.
    }
}

// Tetapkan nilai yang diurai dari parameter baris perintah ke variabel yang sesuai.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
$key = $options["key"];       // Nama objek.

// Muat kredensial akses dari variabel lingkungan.
// Gunakan EnvironmentVariableCredentialsProvider untuk mengambil ID AccessKey dan Rahasia AccessKey dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // Tentukan penyedia kredensial.
$cfg->setRegion($region); // Tentukan wilayah tempat bucket berada.
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]); // Tentukan titik akhir jika disediakan.
}

// Buat instance OSSClient.
$client = new Oss\Client($cfg);

// Tentukan konten yang ingin Anda tambahkan.
$data='Halo Objek Tambahan'; // Ganti data sampel dengan konten sebenarnya.

// Buat objek AppendObjectRequest untuk menambahkan data ke objek tertentu.
$request = new Oss\Models\AppendObjectRequest(bucket: $bucket, key: $key);
$request->body = Oss\Utils::streamFor($data); // Tentukan bahwa badan permintaan HTTP adalah aliran biner.
$request->position = 0; // Atur posisi dari mana operasi tambahan pertama dimulai ke 0.

// Lakukan operasi unggah tambahan.
$result = $client->appendObject($request);

// Tampilkan hasilnya.
// Tampilkan kode status HTTP dan ID permintaan untuk memeriksa apakah permintaan berhasil.
printf(
    'kode status:' . $result->statusCode . PHP_EOL . // Kode status HTTP. Misalnya, kode status HTTP 200 menunjukkan bahwa permintaan berhasil.
    'ID permintaan:' . $result->requestId . PHP_EOL .    // ID permintaan, yang digunakan untuk debug atau jejak permintaan.
    'posisi tambahan berikutnya:' . $result->nextPosition . PHP_EOL // Tentukan posisi dari mana operasi tambahan berikutnya dimulai.
);

Referensi

  • Untuk kode sampel lengkap untuk unggah tambahan, kunjungi GitHub.