Topik ini menyediakan contoh terperinci tentang cara menggunakan kit pengembangan perangkat lunak (SDK) unggah sisi server untuk PHP guna mengunggah berbagai file media ke penyimpanan di ApsaraVideo VOD.
Ikhtisar
Catatan Arsitektur B/S (Browser/Server) direkomendasikan untuk pengembangan PHP.
PHP upload SDK mengikuti proses umum SDK sisi server ApsaraVideo VOD. Untuk informasi selengkapnya, lihat Proses unggah. Proses dasar penggunaan PHP upload SDK adalah sebagai berikut:
Lengkapi prasyarat. Untuk informasi selengkapnya, lihat Prasyarat.
Integrasikan PHP upload SDK. Untuk informasi selengkapnya, lihat Integrasikan PHP upload SDK.
Implementasikan logika unggah, yang melibatkan konfigurasi informasi unggah.
Titik akhir default untuk PHP upload SDK adalah cn-shanghai (Shanghai). Untuk mengunggah file media ke wilayah lain, Anda dapat menentukan wilayah saat menginisialisasi AliyunVodUploader. Untuk informasi selengkapnya tentang titik akhir yang didukung oleh ApsaraVideo VOD, lihat Endpoints.
Contoh berikut menunjukkan cara mengatur wilayah unggah ke cn-beijing (Beijing):
$apiRegionId = 'cn-beijing'; // Wilayah tujuan untuk unggah.
$uploader = new AliyunVodUploader($accessKeyId, $accessKeySecret, $apiRegionId);
Prasyarat
-
ApsaraVideo VOD telah diaktifkan. Untuk informasi selengkapnya, lihat Aktifkan ApsaraVideo VOD.
-
Pengaturan sistem yang diperlukan untuk unggah, termasuk jalur penyimpanan di wilayah tertentu dan pengaturan callback, telah dikonfigurasi. Untuk informasi selengkapnya, lihat Kelola bucket penyimpanan dan Konfigurasi callback.
-
RAM user telah dibuat dan digunakan untuk mengakses ApsaraVideo VOD. Untuk mencegah risiko keamanan akibat kebocoran pasangan AccessKey Akun Alibaba Cloud Anda, kami menyarankan agar Anda membuat RAM user dan memberikan izin yang diperlukan untuk mengakses ApsaraVideo VOD kepada RAM user tersebut. Kemudian, Anda dapat menggunakan pasangan AccessKey RAM user tersebut untuk mengakses ApsaraVideo VOD. Untuk informasi selengkapnya, lihat Buat RAM user dan berikan izin.
-
Konfigurasikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET. Untuk informasi selengkapnya, lihat Konfigurasi variabel lingkungan di Linux, macOS, dan Windows.
Penting
-
Pasangan AccessKey Akun Alibaba Cloud memiliki izin atas semua operasi API. Gunakan pasangan AccessKey RAM user untuk memanggil operasi API atau melakukan O&M rutin.
-
Jangan hard-code ID AccessKey dan Rahasia AccessKey Anda dalam kode proyek. Jika bocor, semua sumber daya dalam akun Anda akan dikompromikan.
-
Opsional. Role dibuat untuk RAM user dan role tersebut diberikan izin yang diperlukan untuk mengakses ApsaraVideo VOD jika Anda ingin mengakses ApsaraVideo VOD menggunakan Security Token Service (STS). Untuk informasi selengkapnya, lihat Dapatkan token STS.
Integrasikan PHP upload SDK
Unduh SDK dan demo.
Ekstrak VodUploadSDK-PHP_1.0.3.zip dan salin folder voduploadsdk dari direktori VodUploadSDK-PHP_1.0.3 ke proyek Anda.
Struktur direktori PHP upload SDK
Jalur: VodUploadSDK-PHP_1.0.3/voduploadsdk/uploader
UploadVideoRequest.php
Direktori | Deskripsi |
UploadVideoRequest | Kelas permintaan untuk mengunggah video. Untuk informasi selengkapnya tentang bidang-bidangnya, lihat CreateUploadVideo. |
UploadImageRequest.php
Direktori | Deskripsi |
UploadImageRequest | Kelas permintaan untuk mengunggah gambar. Untuk informasi selengkapnya tentang bidang-bidangnya, lihat CreateUploadImage. |
UploadAttachedMediaRequest.php
Direktori | Deskripsi |
UploadAttachedMediaRequest | Kelas permintaan untuk mengunggah aset media pendukung. Untuk informasi selengkapnya tentang bidang-bidangnya, lihat CreateUploadAttachedMedia. |
AliyunVodUploader.php
Direktori | Deskripsi |
__construct | Mengatur AccessKey untuk unggah, pusat ApsaraVideo VOD, dan titik akhir. Untuk informasi selengkapnya, lihat AccessKey dan ID wilayah ApsaraVideo VOD. |
uploadLocalVideo | Antarmuka untuk mengunggah video lokal. |
uploadWebVideo | Antarmuka untuk mengunggah video web. |
uploadLocalImage | Mengunggah gambar lokal. |
uploadWebImage | Mengunggah gambar web. |
uploadLocalAttachedMedia | Mengunggah aset media pendukung lokal. |
uploadWebAttachedMedia | Mengunggah aset media pendukung web. |
uploadLocalM3u8 | Mengunggah file M3U8 lokal. |
uploadWebM3u8 | Mengunggah file M3U8 web. |
parseM3u8File | Mengurai manifes M3U8 untuk mendapatkan daftar alamat shard. |
setEcsRegionId | Mengatur wilayah tempat skrip unggah dideploy pada instance ECS, jika berlaku. Jika wilayah tersebut sama dengan wilayah penyimpanan ApsaraVideo VOD, unggah jaringan internal akan diaktifkan secara otomatis. |
setEnableSSL | Menentukan apakah akan mengaktifkan SSL (menggunakan HTTPS untuk permintaan jaringan). Secara default dinonaktifkan untuk mencegah masalah ketika ekstensi terkait tidak diinstal atau dikonfigurasi secara salah. |
uploadProgressCallback | Fungsi callback untuk kemajuan unggah. Anda dapat menulis ulang fungsi ini. Untuk tanda tangan metode dan contoh override, lihat di bawah. |
Tanda tangan metode uploadProgressCallback
public function uploadProgressCallback($mediaId, $consumedBytes, $totalBytes)
Untuk menghitung persentase kemajuan unggah, gunakan 100 * ($consumedBytes / $totalBytes). Pastikan bahwa $totalBytes lebih besar dari 0 sebelum melakukan pembagian untuk menghindari pembagian dengan nol.
Untuk menampilkan kemajuan unggah kustom, perluas AliyunVodUploader dan override metode ini. Contoh berikut menunjukkan caranya:
class MyAliyunVodUploader extends AliyunVodUploader {
public function uploadProgressCallback($mediaId, $consumedBytes, $totalBytes) {
if ($totalBytes > 0) {
$rate = 100 * (floatval($consumedBytes) / floatval($totalBytes));
} else {
$rate = 0;
}
echo round($rate, 1) . "%\n";
flush();
}
}
AliyunVodUtils.php
Direktori | Deskripsi |
AliyunVodUtils | Kelas utilitas yang menyediakan fungsi statis, seperti fungsi untuk memotong string, mendapatkan ekstensi file, dan mendapatkan nama file. |
AliyunVodLog | Kelas log untuk pencetakan sederhana. `logSwitch` adalah sakelar log. |
AliyunVodDownloader | Mengunduh file web. |
AliyunVodReportUpload | Memberikan laporan kemajuan unggah. |
AliyunVodError | Menentukan kode kesalahan. |
Jalur: VodUploadSDK-PHP_1.0.3/voduploadsdk
aliyun-php-sdk-core: Dependensi yang menyediakan kelas dasar untuk upload SDK. Ini mengenkapsulasi penandatanganan API Alibaba Cloud, permintaan HTTP, dan fungsionalitas inti lainnya.
aliyun-php-sdk-vod: SDK API sisi server untuk ApsaraVideo VOD. Ini mengenkapsulasi permintaan untuk API ApsaraVideo VOD.
aliyun-php-sdk-oss: Dependensi yang menyediakan kelas OSS untuk upload SDK. Ini mengenkapsulasi operasi unggah OSS dan fungsi terkait lainnya.
Jalur: VodUploadSDK-PHP_1.0.3/samples
uploadVideo.php: Kode contoh untuk mengunggah video.
uploadImage.php: Kode contoh untuk mengunggah gambar.
uploadAttachedMedia.php: Kode contoh untuk mengunggah aset media pendukung.
Skenario 1: Unggah file audio dan video
File audio dan video standar
Anda dapat mengunggah jenis file audio dan video berikut:
Anda dapat mengunggah file lokal menggunakan unggah multi-bagian. Ukuran satu file bisa mencapai 48,8 TB. Unggah yang dapat dilanjutkan tidak didukung. Untuk informasi selengkapnya, lihat fungsi `testUploadLocalVideo`.
Anda dapat mengunggah file web dengan menentukan URL file. Ukuran satu file bisa mencapai 48,8 TB. Metode ini memerlukan file web diunduh ke disk lokal sebelum diunggah. Pastikan disk lokal Anda memiliki ruang yang cukup. Untuk informasi selengkapnya, lihat fungsi `testUploadWebVideo`.
Klik untuk melihat kode contoh
<?php
/**
* Dibuat oleh Aliyun ApsaraVideo VOD.
*/
require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . 'voduploadsdk' . DIRECTORY_SEPARATOR . 'Autoloader.php';
date_default_timezone_set('PRC');
// Uji unggah video lokal.
function testUploadLocalVideo($accessKeyId, $accessKeySecret, $filePath)
{
try {
$uploader = new AliyunVodUploader($accessKeyId, $accessKeySecret);
$uploadVideoRequest = new UploadVideoRequest($filePath, 'testUploadLocalVideo via PHP-SDK');
// CateId adalah ID kategori media. Anda dapat melihatnya di halaman **Category Management** di bawah **Configuration Management** > **Media Management** di konsol ApsaraVideo VOD, atau buat satu dengan memanggil operasi AddCategory. Untuk informasi selengkapnya, lihat <!-- @xref node="2526041" -->[Kelola kategori video](https://www.alibabacloud.com/help/zh/vod/user-guide/manage-video-categories)<!-- @/xref -->.
$uploadVideoRequest->setCateId(<your category ID>);
// Contoh CoverURL: http://example.com/example****.jpg
//$uploadVideoRequest->setCoverURL("<your CoverURL>");
//$uploadVideoRequest->setTags('test1,test2');
//$uploadVideoRequest->setStorageLocation('outin-xx.oss-cn-beijing.aliyuncs.com');
$uploadVideoRequest->setTemplateGroupId('your-template-group-id');
$userData = array(
// Contoh Callback: https://demo.aliyundoc.com/ProcessMessageCallback
"MessageCallback"=>array("CallbackURL"=>"<your callback URL>"),
"Extend"=>array("localId"=>"xxx", "test"=>"www")
);
$uploadVideoRequest->setUserData(json_encode($userData));
$res = $uploader->uploadLocalVideo($uploadVideoRequest);
print_r($res);
} catch (Exception $e) {
printf("testUploadLocalVideo Gagal, PesanKesalahan: %s\n Lokasi: %s %s\n Jejak: %s\n",
$e->getMessage(), $e->getFile(), $e->getLine(), $e->getTraceAsString());
}
}
// Uji unggah video web.
function testUploadWebVideo($accessKeyId, $accessKeySecret, $fileURL)
{
try {
$uploader = new AliyunVodUploader($accessKeyId, $accessKeySecret);
$uploadVideoRequest = new UploadVideoRequest($fileURL, 'testUploadWebVideo via PHP-SDK');
$res = $uploader->uploadWebVideo($uploadVideoRequest);
print_r($res);
} catch (Exception $e) {
printf("testUploadWebVideo Gagal, PesanKesalahan: %s\n Lokasi: %s %s\n Jejak: %s\n",
$e->getMessage(), $e->getFile(), $e->getLine(), $e->getTraceAsString());
}
}
#### Jalankan kode uji ####
// Pasangan AccessKey Akun Alibaba Cloud memiliki izin untuk mengakses semua API. Gunakan pasangan AccessKey RAM user untuk akses API atau O&M harian.
// Jangan hard-code ID AccessKey dan Rahasia AccessKey ke dalam kode proyek Anda. Hal ini dapat menyebabkan kebocoran pasangan AccessKey dan mengompromikan keamanan semua sumber daya dalam akun Anda.
// Contoh ini menunjukkan cara menggunakan pasangan AccessKey dari variabel lingkungan untuk mengautentikasi akses API. Sebelum menjalankan kode contoh, konfigurasikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET.
$accessKeyId = getenv('ALIBABA_CLOUD_ACCESS_KEY_ID');
$accessKeySecret = getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET');
$localFilePath = '/opt/video/sample.mp4';
// testUploadLocalVideo($accessKeyId, $accessKeySecret, $localFilePath);
// Contoh webFileURL: http://example-bucket-****.cn-shanghai.aliyuncs.com/b55b904bc612463b812990b7c8cc****/daa30814c0c340cf8199926f78aa****-a0bc05ba62c3e95cc672e88b8281****-ld.mp4?auth_key=1608774986-0-0-c56acd302bea0c331370d8ed6865****
$webFileURL = '<your webFileURL>';
testUploadWebVideo($accessKeyId, $accessKeySecret, $webFileURL);
uploadLocalVideo memungkinkan Anda menentukan kelompok template transkoding saat mengunggah video dengan memanggil setTemplateGroupId(). Jika Anda menentukan ID kelompok template transkoding, video akan secara otomatis ditranskode segera setelah unggah selesai, dan Anda tidak perlu memanggil operasi SubmitTranscodeJobs secara terpisah. Untuk mendapatkan ID kelompok template transkoding, buka halaman Configuration Management > Media Processing Configuration > Transcoding Template Groups di konsol VOD.
File video M3U8
Kode berikut memberikan contoh:
Klik untuk melihat kode contoh
<?php
/**
* Dibuat oleh Aliyun ApsaraVideo VOD.
*/
require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . 'voduploadsdk' . DIRECTORY_SEPARATOR . 'Autoloader.php';
date_default_timezone_set('PRC');
// Uji unggah video M3U8 lokal.
function testUploadLocalM3u8($accessKeyId, $accessKeySecret, $m3u8FilePath)
{
try {
$uploader = new AliyunVodUploader($accessKeyId, $accessKeySecret);
$uploadVideoRequest = new UploadVideoRequest($m3u8FilePath, 'testUploadLocalM3u8 via PHP-SDK');
// Panggil API untuk mengurai daftar alamat shard dari file M3U8. Jika hasil penguraian tidak akurat, gabungkan sendiri daftar alamat tersebut. Secara default, file shard dan file M3U8 berada di direktori yang sama.
$sliceFiles = $uploader->parseM3u8File($m3u8FilePath);
//print_r($sliceFiles);
$res = $uploader->uploadLocalM3u8($uploadVideoRequest, $sliceFiles);
print_r($res);
} catch (Exception $e) {
printf("testUploadLocalM3u8 Gagal, PesanKesalahan: %s\n Lokasi: %s %s\n Jejak: %s\n",
$e->getMessage(), $e->getFile(), $e->getLine(), $e->getTraceAsString());
}
}
// Uji unggah video M3U8 web.
function testUploadWebM3u8($accessKeyId, $accessKeySecret, $m3u8FileUrl)
{
try {
$uploader = new AliyunVodUploader($accessKeyId, $accessKeySecret);
$uploadVideoRequest = new UploadVideoRequest($m3u8FileUrl, 'testUploadWebM3u8 via PHP-SDK');
// Panggil API untuk mengurai daftar alamat shard dari file M3U8. Jika hasil penguraian tidak akurat, gabungkan sendiri daftar alamat tersebut. Secara default, file shard dan file M3U8 berada di direktori yang sama.
$sliceFileUrls = $uploader->parseM3u8File($m3u8FileUrl);
//print_r($sliceFileUrls);
$res = $uploader->uploadWebM3u8($uploadVideoRequest, $sliceFileUrls);
print_r($res);
} catch (Exception $e) {
printf("testUploadWebM3u8 Gagal, PesanKesalahan: %s\n Lokasi: %s %s\n Jejak: %s\n",
$e->getMessage(), $e->getFile(), $e->getLine(), $e->getTraceAsString());
}
}
#### Jalankan kode uji ####
// Pasangan AccessKey Akun Alibaba Cloud memiliki izin untuk mengakses semua API. Gunakan pasangan AccessKey RAM user untuk akses API atau O&M harian.
// Jangan hard-code ID AccessKey dan Rahasia AccessKey ke dalam kode proyek Anda. Hal ini dapat menyebabkan kebocoran pasangan AccessKey dan mengompromikan keamanan semua sumber daya dalam akun Anda.
// Contoh ini menunjukkan cara menggunakan pasangan AccessKey dari variabel lingkungan untuk mengautentikasi akses API. Sebelum menjalankan kode contoh, konfigurasikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET.
$accessKeyId = getenv('ALIBABA_CLOUD_ACCESS_KEY_ID');
$accessKeySecret = getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET');
$localM3u8FilePath = '/opt/video/m3u8/sample.m3u8';
//testUploadLocalM3u8($accessKeyId, $accessKeySecret, $localM3u8FilePath);
// Contoh webM3u8FileURL: http://example-bucket-****.cn-shanghai.aliyuncs.com/b55b904bc612463b812990b7c8cc****/daa30814c0c340cf8199926f78aa****-195a25af366b5edae324c47e99a0****-ld.m3u8?auth_key=1608775606-0-0-9fb038deaecd009dadd86721c585****
$webM3u8FileURL = '<your webM3u8FileURL>';
//testUploadWebM3u8($accessKeyId, $accessKeySecret, $webM3u8FileURL);
Akselerasi unggah
Untuk mengunggah file besar (dalam satuan GB atau TB) atau melakukan unggah cross-region, seperti mengunggah video dari Tiongkok daratan ke alamat penyimpanan di wilayah penyimpanan Singapura, Anda dapat mengaktifkan fitur akselerasi unggah. Untuk informasi selengkapnya, lihat Metode aktivasi. Setelah Anda mengaktifkan fitur ini, Anda harus menambahkan pasangan kunci-nilai AccelerateConfig key-value ke objek UserData dalam konfigurasi unggah. Jika objek UserData belum ada, buatlah. Kode berikut memberikan contoh:
$userData = array(
"AccelerateConfig"=>array("Type"=>"oss","Domain"=>"****Bucket.oss-accelerate.aliyuncs.com"),
);
$uploadVideoRequest->setUserData(json_encode($userData));
Deskripsi parameter
Nama | Tipe | Deskripsi |
Type | string | Jenis akselerasi unggah yang akan diaktifkan. Hanya `oss` yang didukung. |
Domain | string | Titik akhir percepatan untuk bucket pengguna. HTTPS digunakan secara default.
Catatan Gunakan titik akhir percepatan yang ditetapkan setelah aktivasi, misalnya, `vod-*******.oss-accelerate.aliyuncs.com`. |
Unggah batch beberapa video
Setiap pemanggilan uploadLocalVideo atau uploadWebVideo hanya mengunggah satu file video. Unggah batch beberapa video dalam satu pemanggilan tidak didukung. Untuk mengunggah beberapa video secara batch, panggil operasi UploadMediaByUrl.
Saat Anda melakukan unggah batch video di halaman unggah di konsol, video diproses satu per satu. Jika Anda perlu mengunggah file besar atau batch file, kami sarankan Anda menggunakan tool klien PC.
Skenario 2: Unggah gambar
Klik untuk melihat kode contoh
Klik untuk melihat kode contoh
<?php
/**
* Dibuat oleh Aliyun ApsaraVideo VoD.
* Pengguna: https://www.aliyun.com/product/vod
*/
require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . 'voduploadsdk' . DIRECTORY_SEPARATOR . 'Autoloader.php';
date_default_timezone_set('PRC');
// Uji unggah gambar lokal.
function testUploadLocalImage($accessKeyId, $accessKeySecret, $filePath)
{
try {
$uploader = new AliyunVodUploader($accessKeyId, $accessKeySecret);
$uploadImageRequest = new UploadImageRequest($filePath, 'testUploadLocalImage via PHP-SDK');
$uploadImageRequest->setCateId(1000009458);
$res = $uploader->uploadLocalImage($uploadImageRequest);
print_r($res);
} catch (Exception $e) {
printf("testUploadLocalImage Gagal, PesanKesalahan: %s\n", $e->getMessage());
}
}
// Uji unggah gambar web.
function testUploadWebImage($accessKeyId, $accessKeySecret, $fileURL)
{
try {
$uploader = new AliyunVodUploader($accessKeyId, $accessKeySecret);
$uploadImageRequest = new UploadImageRequest($fileURL, 'testUploadWebImage via PHP-SDK');
$uploadImageRequest->setCateId(1000009458);
$res = $uploader->uploadWebImage($uploadImageRequest);
print_r($res);
} catch (Exception $e) {
printf("testUploadWebImage Gagal, PesanKesalahan: %s\n", $e->getMessage());
}
}
#### Jalankan kode uji ####
// Pasangan AccessKey Akun Alibaba Cloud memiliki izin untuk mengakses semua API. Gunakan pasangan AccessKey RAM user untuk akses API atau O&M harian.
// Jangan hard-code ID AccessKey dan Rahasia AccessKey ke dalam kode proyek Anda. Hal ini dapat menyebabkan kebocoran pasangan AccessKey dan mengompromikan keamanan semua sumber daya dalam akun Anda.
// Contoh ini menunjukkan cara menggunakan pasangan AccessKey dari variabel lingkungan untuk mengautentikasi akses API. Sebelum menjalankan kode contoh, konfigurasikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET.
$accessKeyId = getenv('ALIBABA_CLOUD_ACCESS_KEY_ID');
$accessKeySecret = getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET');
$localFilePath = '/opt/image/test-image.jpg';
//testUploadLocalImage($accessKeyId, $accessKeySecret, $localFilePath);
$webFileURL = 'http://vod-download.cn-shanghai.aliyuncs.com/retina/pic/20180208/496AE240-54AE-4CC8-8578-3EEC8F38****.gif';
testUploadWebImage($accessKeyId, $accessKeySecret, $webFileURL);
Skenario 3: Unggah aset media pendukung
Kode berikut memberikan contoh:
Klik untuk melihat kode contoh
Klik untuk melihat kode contoh
<?php
/**
* Dibuat oleh Aliyun ApsaraVideo VoD.
* Pengguna: https://www.aliyun.com/product/vod
*/
require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . 'voduploadsdk' . DIRECTORY_SEPARATOR . 'Autoloader.php';
date_default_timezone_set('PRC');
// Uji unggah aset media pendukung lokal.
function testUploadLocalAttachedMedia($accessKeyId, $accessKeySecret, $filePath)
{
try {
$uploader = new AliyunVodUploader($accessKeyId, $accessKeySecret);
$uploadAttachedRequest = new UploadAttachedMediaRequest($filePath, 'watermark',
'testUploadLocalAttachedMedia via PHP-SDK');
//$uploadAttachedRequest->setCateId(100000****);
$res = $uploader->uploadLocalAttachedMedia($uploadAttachedRequest);
print_r($res);
} catch (Exception $e) {
printf("testUploadLocalAttachedMedia Gagal, PesanKesalahan: %s\n", $e->getMessage());
}
}
// Uji unggah aset media pendukung web.
function testUploadWebAttachedMedia($accessKeyId, $accessKeySecret, $fileURL)
{
try {
$uploader = new AliyunVodUploader($accessKeyId, $accessKeySecret);
$uploadAttachedRequest = new UploadAttachedMediaRequest($fileURL, 'watermark',
'testUploadWebAttachedMedia via PHP-SDK');
//$uploadAttachedRequest->setCateId(100000****);
$res = $uploader->uploadWebAttachedMedia($uploadAttachedRequest);
print_r($res);
} catch (Exception $e) {
printf("testUploadWebAttachedMedia Gagal, PesanKesalahan: %s\n", $e->getMessage());
}
}
#### Jalankan kode uji ####
// Pasangan AccessKey Akun Alibaba Cloud memiliki izin untuk mengakses semua API. Gunakan pasangan AccessKey RAM user untuk akses API atau O&M harian.
// Jangan hard-code ID AccessKey dan Rahasia AccessKey ke dalam kode proyek Anda. Hal ini dapat menyebabkan kebocoran pasangan AccessKey dan mengompromikan keamanan semua sumber daya dalam akun Anda.
// Contoh ini menunjukkan cara menggunakan pasangan AccessKey dari variabel lingkungan untuk mengautentikasi akses API. Sebelum menjalankan kode contoh, konfigurasikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET.
$accessKeyId = getenv('ALIBABA_CLOUD_ACCESS_KEY_ID');
$accessKeySecret = getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET');
$localFilePath = '/opt/image/test.png';
//testUploadLocalAttachedMedia($accessKeyId, $accessKeySecret, $localFilePath);
$webFileURL = 'http://vod-download.cn-shanghai.aliyuncs.com/retina/pic/20180208/496AE240-54AE-4CC8-8578-3EEC8F38****.gif';
testUploadWebAttachedMedia($accessKeyId, $accessKeySecret, $webFileURL);