Unggah tambahan menambahkan konten ke objek yang dapat ditambahkan yang sudah ada dengan menggunakan metode AppendObject.
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 detail mengenai wilayah dan titik akhir yang didukung, lihat Wilayah dan titik akhir.
Pada topik ini, kredensial akses diperoleh dari variabel lingkungan. Untuk informasi selengkapnya tentang cara mengonfigurasi kredensial akses, lihat Konfigurasi kredensial akses.
Pada topik ini, instans OSSClient dibuat menggunakan titik akhir OSS. Jika Anda ingin membuat instans OSSClient menggunakan nama domain kustom atau Security Token Service (STS), lihat Contoh konfigurasi untuk skenario umum.
Jika file tidak ada, pemanggilan operasi AppendObject akan membuat objek yang dapat ditambahkan.
Jika file sudah ada:
Jika file tersebut merupakan objek yang dapat ditambahkan dan posisi tambah yang ditentukan sesuai dengan panjang file saat ini, konten akan ditambahkan ke akhir file.
Jika file tersebut merupakan objek yang dapat ditambahkan tetapi posisi tambah yang ditentukan tidak sesuai dengan panjang file saat ini, eksepsi PositionNotEqualToLength akan dilemparkan.
Jika file tersebut bukan objek yang dapat ditambahkan, seperti objek Normal yang diunggah melalui simple upload, eksepsi ObjectNotAppendable akan dilemparkan.
Izin
Secara default, Akun Alibaba Cloud memiliki izin penuh. Pengguna RAM atau Peran RAM di bawah Akun Alibaba Cloud tidak memiliki izin apa pun secara default. Akun Alibaba Cloud atau administrator akun harus memberikan izin operasi melalui Kebijakan RAM atau Kebijakan bucket.
API | Aksi | Definisi |
AppendObject |
| Anda dapat memanggil operasi ini untuk mengunggah objek dengan menambahkannya ke objek yang sudah ada. |
| Saat mengunggah objek dengan menambahkannya ke objek yang sudah ada, jika Anda menentukan tag objek melalui x-oss-tagging, izin ini diperlukan. |
Tambahkan string
Kode berikut menunjukkan cara menambahkan string secara berurutan ke file srcexampleobject.txt di bucket examplebucket.
<?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 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. Setel titik akhir ke titik akhir yang sebenarnya. Untuk informasi lebih lanjut tentang pemetaan antara wilayah dan titik akhir, lihat Titik Akhir.
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Tentukan nama bucket. Untuk informasi lebih lanjut tentang konvensi penamaan bucket, lihat Bucket.
$bucket= "examplebucket";
// Tentukan path lengkap objek. Jangan sertakan nama bucket. Untuk informasi lebih lanjut tentang konvensi penamaan objek, lihat Istilah.
$object = "srcexampleobject.txt";
// Tentukan string yang akan ditambahkan secara berurutan. Setelah operasi tambah pertama, kedua, dan ketiga, konten file masing-masing menjadi "Hello OSS", "Hi OSS", dan "OSS OK".
$content_array = array('Hello OSS', 'Hi OSS', 'OSS OK');
$options = array(
'headers' => array(
// Tentukan perilaku cache halaman web saat objek diunduh.
// 'Cache-Control' => 'no-cache',
// Tentukan nama objek saat diunduh.
// 'Content-Disposition' => 'attachment;filename=oss_download.jpg',
// Tentukan waktu kedaluwarsa.
// 'Expires' => 'Fri, 31 Dec 2021 16:57:01 GMT',
// Tentukan apakah objek dengan nama yang sama boleh ditimpa selama unggah tambahan. Setel parameter ini ke true untuk melarang penimpaan.
// 'x-oss-forbid-overwrite' => 'true',
// Tentukan metode enkripsi sisi server untuk setiap bagian objek.
// 'x-oss-server-side-encryption'=> 'AES256',
// Tentukan algoritma enkripsi untuk objek.
// 'x-oss-server-side-data-encryption'=>'SM4',
// Tentukan kelas penyimpanan objek.
// 'x-oss-storage-class' => 'Standard',
// Tentukan izin akses untuk objek.
// 'x-oss-object-acl' => 'private',
),
);
try{
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
"signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
"region"=> "cn-hangzhou"
);
$ossClient = new OssClient($config);
// Lakukan unggah tambahan pertama. Posisi untuk tambahan pertama adalah 0. Nilai kembali menunjukkan posisi untuk tambahan berikutnya. Posisi untuk tambahan selanjutnya adalah panjang file sebelum tambahan.
$position = $ossClient->appendObject($bucket, $object, $content_array[0], 0,$options);
$position = $ossClient->appendObject($bucket, $object, $content_array[1], $position,$options);
$position = $ossClient->appendObject($bucket, $object, $content_array[2], $position,$options);
} catch(OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
print(__FUNCTION__ . ": OK" . "\n"); Tambahkan file lokal
Kode berikut menunjukkan cara menambahkan konten file lokal examplefilea.txt, examplefileb.txt, dan examplefilec.txt secara berurutan ke file exampleobject.txt di bucket examplebucket.
<?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 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. Setel titik akhir ke titik akhir yang sebenarnya.
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Tentukan nama bucket.
$bucket= "examplebucket";
// Tentukan path lengkap objek. Jangan sertakan nama bucket.
$object = "exampleobject.txt";
// Tentukan path lengkap file lokal. Jika Anda tidak menentukan path lokal, file akan diunggah dari path proyek program contoh secara default.
$filePath = "D:\\localpath\\examplefilea.txt";
$filePath1 = "D:\\localpath\\examplefileb.txt";
$filePath2 = "D:\\localpath\\examplefilec.txt";
try{
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
"signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
"region"=> "cn-hangzhou"
);
$ossClient = new OssClient($config);
// Lakukan unggah tambahan pertama. Posisi untuk tambahan pertama adalah 0. Nilai kembali menunjukkan posisi untuk tambahan berikutnya. Posisi untuk tambahan selanjutnya adalah panjang file sebelum tambahan.
$position = $ossClient->appendFile($bucket, $object, $filePath, 0);
$position = $ossClient->appendFile($bucket, $object, $filePath1, $position);
$position = $ossClient->appendFile($bucket, $object, $filePath2, $position);
} catch(OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
print(__FUNCTION__ . ": OK" . "\n"); Referensi
Untuk informasi selengkapnya tentang operasi API yang digunakan untuk unggah tambahan, lihat AppendObject.