SDK unggah dibangun di atas OSS SDK dan menyederhanakan proses unggah. Jika SDK unggah tidak memenuhi kebutuhan Anda atau Anda memerlukan kontrol yang lebih fleksibel, Anda dapat menggunakan OSS SDK untuk mengunggah file secara langsung.
OSS SDK
OSS SDK mendukung bahasa pemrograman seperti Java, Python, Go, PHP, Node.js, dan Ruby, serta klien seperti iOS, Android, dan Harmony. Untuk informasi lebih lanjut, lihat Ikhtisar membuat permintaan menggunakan SDK.
Alur Kerja
Skenario unggah sisi server
Ketika menggunakan OSS SDK untuk bahasa seperti Java, Python, atau PHP pada server aplikasi Anda untuk mengunggah file lokal ke bucket OSS, Anda dapat memastikan keamanan AccessKey Anda. Dalam skenario ini, Anda dapat memanggil ApsaraVideo VOD OpenAPI langsung dari server aplikasi Anda untuk mendapatkan URL unggah dan kredensial. Kemudian, gunakan OSS SDK untuk mengunggah file.
Skema unggah sisi klien
Jika Anda menggunakan OSS SDK pada klien, seperti halaman web atau aplikasi seluler, untuk mengunggah file lokal ke bucket OSS, Anda harus terlebih dahulu menyiapkan layanan otorisasi pada server aplikasi Anda. Klien memanggil layanan ini untuk mendapatkan URL unggah dan kredensial, lalu mengunggah file langsung ke OSS.
Catatan:
Untuk prosedur dan contoh kode untuk mendapatkan URL unggah dan kredensial dari layanan ApsaraVideo VOD pada server aplikasi, lihat Dapatkan URL unggah dan kredensial.
Tanggapan berisi URL unggah (UploadAddress) yang di-enkode Base64, kredensial unggah (UploadAuth), ID media, dan informasi lainnya. Anda harus secara manual mengurai parameter-parameter ini dan menggunakannya sebagai parameter input untuk menginisialisasi OSS SDK.
CatatanBidang
UploadAddressberisi informasi tentang bucket OSS tujuan. BidangUploadAuthberisi informasi otorisasi, seperti token Layanan Token Keamanan (STS). Secara manual decode Base64 URL unggah dan kredensial. Lalu, gunakan bidang yang didekode untuk menginisialisasi klien OSS SDK. Untuk informasi lebih lanjut, lihat Referensi: Parse the upload URL and credential.Saat layanan ApsaraVideo VOD memberikan URL unggah dan kredensial, ia juga secara otomatis membuat aset media dan mengembalikan ID media (MediaId). Anda harus menyimpan ID media ini dengan aman. ID media digunakan sebagai parameter input untuk manajemen aset media, pemutaran audio dan video, dan Pemrosesan Media ApsaraVideo.
VideoIddikembalikan saat Anda mendapatkan URL unggah dan kredensial untuk video.ImageIddikembalikan saat Anda mendapatkan URL unggah dan kredensial untuk gambar.MediaIddikembalikan saat Anda mendapatkan URL unggah dan kredensial untuk aset media pendukung.
Unduh demo sampel
ApsaraVideo VOD menyediakan kode sumber demo untuk pengembang.
Integrasi program
Berikut adalah langkah-langkah integrasi menggunakan Java sebagai contoh.
Prasyarat
ApsaraVideo VOD telah diaktifkan. Untuk informasi lebih lanjut, lihat Aktifkan ApsaraVideo VOD.
Pengaturan sistem yang diperlukan untuk unggah, termasuk jalur penyimpanan di wilayah tertentu dan pengaturan callback, telah dikonfigurasi. Untuk informasi lebih lanjut, lihat Kelola bucket penyimpanan dan Konfigurasikan callback.
Pengguna RAM telah dibuat dan digunakan untuk mengakses ApsaraVideo VOD. Untuk mencegah risiko keamanan yang disebabkan oleh kebocoran pasangan AccessKey akun Alibaba Cloud Anda, kami sarankan Anda membuat pengguna RAM dan memberikan izin yang diperlukan kepada pengguna RAM untuk mengakses ApsaraVideo VOD. Kemudian, Anda dapat menggunakan pasangan AccessKey dari pengguna RAM untuk mengakses ApsaraVideo VOD. Untuk informasi lebih lanjut, lihat Buat dan berikan izin kepada pengguna RAM.
Konfigurasikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET. Untuk informasi lebih lanjut, lihat Konfigurasikan variabel lingkungan di Linux, macOS, dan Windows.
PentingPasangan AccessKey akun Alibaba Cloud memiliki izin pada semua operasi API. Kami sarankan Anda menggunakan pasangan AccessKey pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
Kami sarankan Anda tidak menulis kode keras AccessKey ID dan AccessKey secret ke dalam kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya di akun Anda akan terganggu.
Opsional. Peran dibuat untuk pengguna RAM dan peran tersebut diberikan izin yang diperlukan untuk mengakses ApsaraVideo VOD jika Anda ingin mengakses ApsaraVideo VOD menggunakan Layanan Token Keamanan (STS). Untuk informasi lebih lanjut, lihat Dapatkan token STS.
CatatanUntuk informasi lebih lanjut tentang skenario di mana STS dapat digunakan, lihat Perbandingan antara kredensial dan STS.
Persyaratan
Java 1.8 atau yang lebih baru diperlukan.
Anda dapat menjalankan perintah
java -versiondi terminal untuk memeriksa versi Java.
Kode sampel
SDK V1.0
Langkah 1. Instal dependensi
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.6.1</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-vod</artifactId>
<version>2.16.32</version>
</dependency>
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.17.4</version>
</dependency>Langkah 2. Unggah file (contoh kode Java)
import com.alibaba.fastjson.JSONObject;
import com.aliyun.oss.OSSClient;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.vod.model.v20170321.CreateUploadVideoRequest;
import com.aliyuncs.vod.model.v20170321.CreateUploadVideoResponse;
import org.apache.commons.codec.binary.Base64;
import java.io.File;
/**
* deskripsi
*/
public class UploadDemo {
public static DefaultAcsClient initVodClient(String accessKeyId, String accessKeySecret) throws ClientException {
// Tentukan wilayah tempat layanan ApsaraVideo VOD diaktifkan. Misalnya, jika layanan diaktifkan di wilayah China (Shanghai), atur nilainya menjadi cn-shanghai. Untuk informasi lebih lanjut tentang wilayah lainnya, lihat Ikhtisar unggah media.
String regionId = "cn-shanghai";
DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);
DefaultAcsClient client = new DefaultAcsClient(profile);
return client;
}
public static CreateUploadVideoResponse createUploadVideo(DefaultAcsClient vodClient) throws ClientException {
CreateUploadVideoRequest request = new CreateUploadVideoRequest();
request.setFileName("vod_test.mp4");
request.setTitle("ini adalah judul");
//request.setDescription("ini adalah deskripsi");
//request.setTags("tag1,tag2");
// Contoh CoverURL: http://example.aliyundoc.com/test_cover_****.jpg
//request.setCoverURL("<your CoverURL>");
//request.setCateId(-1L);
//request.setTemplateGroupId("");
//request.setWorkflowId("");
//request.setStorageLocation("");
//request.setAppId("app-1000000");
// Atur periode waktu habis untuk permintaan.
request.setSysReadTimeout(1000);
request.setSysConnectTimeout(1000);
return vodClient.getAcsResponse(request);
}
public static OSSClient initOssClient(JSONObject uploadAuth, JSONObject uploadAddress) {
String endpoint = uploadAddress.getString("Endpoint");
String accessKeyId = uploadAuth.getString("AccessKeyId");
String accessKeySecret = uploadAuth.getString("AccessKeySecret");
String securityToken = uploadAuth.getString("SecurityToken");
return new OSSClient(endpoint, accessKeyId, accessKeySecret, securityToken);
}
public static void uploadLocalFile(OSSClient ossClient, JSONObject uploadAddress, String localFile) {
String bucketName = uploadAddress.getString("Bucket");
String objectName = uploadAddress.getString("FileName");
File file = new File(localFile);
ossClient.putObject(bucketName, objectName, file);
}
public static void main(String[] argv) {
// AccessKey akun Alibaba Cloud memiliki izin pada semua API. Kami sarankan Anda menggunakan AccessKey pengguna RAM untuk akses API atau O&M rutin.
// Jangan menulis kode keras AccessKey ID dan AccessKey secret di kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor dan mengancam keamanan semua sumber daya di akun Anda.
// Contoh ini menunjukkan cara menggunakan AccessKey yang diperoleh dari variabel lingkungan untuk mengimplementasikan verifikasi identitas untuk akses API. Sebelum Anda menjalankan kode sampel, konfigurasikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET.
// AccessKey ID Anda.
String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
// AccessKey secret Anda.
String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
// Jalur lengkap file video lokal yang ingin Anda unggah ke ApsaraVideo VOD. Jalur tersebut harus mencakup ekstensi nama file.
String localFile = "/Users/yours/Video/testVideo.flv";
try {
// Inisialisasi klien ApsaraVideo VOD dan dapatkan URL unggah dan kredensial.
DefaultAcsClient vodClient = initVodClient(accessKeyId, accessKeySecret);
CreateUploadVideoResponse createUploadVideoResponse = createUploadVideo(vodClient);
// Jika operasi berhasil, VideoId, UploadAddress, dan UploadAuth dikembalikan.
String videoId = createUploadVideoResponse.getVideoId();
JSONObject uploadAuth = JSONObject.parseObject(decodeBase64(createUploadVideoResponse.getUploadAuth()));
JSONObject uploadAddress = JSONObject.parseObject(decodeBase64(createUploadVideoResponse.getUploadAddress()));
// Gunakan UploadAuth dan UploadAddress untuk menginisialisasi klien OSS.
OSSClient ossClient = initOssClient(uploadAuth, uploadAddress);
// Unggah file. Perhatikan bahwa unggahan bersifat sinkron dan memblokir thread. Waktu yang diperlukan bergantung pada ukuran file dan bandwidth upstream.
uploadLocalFile(ossClient, uploadAddress, localFile);
System.out.println("Unggah file lokal berhasil, VideoId : " + videoId);
} catch (Exception e) {
System.out.println("Unggah file lokal gagal, Pesan Kesalahan : " + e.getLocalizedMessage());
}
}
private static String decodeBase64(String data) {
return new String(Base64.decodeBase64(data));
}
}
SDK V2.0
Langkah 1. Instal dependensi
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>vod20170321</artifactId>
<version>3.6.4</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>tea-openapi</artifactId>
<version>0.3.8</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>tea-console</artifactId>
<version>0.0.1</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>tea-util</artifactId>
<version>0.2.23</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>credentials-java</artifactId>
<version>1.0.1</version>
</dependency>
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.17.4</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.83</version>
</dependency>Langkah 2. Unggah file (contoh kode Java)
Kami sarankan Anda menggunakan metode yang lebih aman yang tidak memerlukan AccessKey dalam kode proyek Anda. Untuk informasi tentang cara mengonfigurasi kredensial, lihat Kelola kredensial akses.
package com.aliyun.sample;
import com.aliyun.oss.ClientBuilderConfiguration;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.common.auth.CredentialsProviderFactory;
import com.aliyun.oss.common.auth.DefaultCredentialProvider;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.PutObjectResult;
import com.aliyun.tea.*;
import com.alibaba.fastjson.JSONObject;
import java.io.File;
import org.apache.commons.codec.binary.Base64;
public class Sample {
/**
* deskripsiReferensi: Menguraikan URL unggah dan kredensial
Anda harus mendekode Base64 URL unggah (UploadAddress) dan kredensial unggah (UploadAuth) untuk mendapatkan URL unggah OSS dan informasi otorisasi. Anda kemudian dapat menggunakan URL dan informasi yang didekode untuk menginisialisasi klien OSS. Contoh kode sampel berikut memberikan contoh:
import org.apache.commons.codec.binary.Base64;
public static String decodeBase64(String s) {
byte[] b = null;
String result = null;
if (s != null) {
Base64 decoder = new Base64();
try {
b = decoder.decode(s);
result = new String(b, "utf-8");
} catch (Exception e) {
}
}
return result;
}Tabel 1. Bidang UploadAddress yang didekode
Bidang | Deskripsi |
Bucket | Alamat penyimpanan di ApsaraVideo VOD. |
Endpoint | ID wilayah penyimpanan di ApsaraVideo VOD. |
FileName | Nama file yang ditetapkan oleh sistem ApsaraVideo VOD untuk file yang diunggah. |
ObjectPrefix | Parameter ini hanya dikembalikan ketika file yang diunggah adalah file M3U8. |
Tabel 2. Bidang UploadAuth yang didekode
Bidang | Deskripsi |
AccessKeyId | AccessKey ID pengguna yang mengunggah file. |
AccessKeySecret | AccessKey secret pengguna yang mengunggah file. |
SecurityToken | Token keamanan untuk otorisasi unggah. |
ExpireUTCTime | Waktu kedaluwarsa URL unggah dan kredensial. Waktu dalam UTC dan mengikuti format yyyy-MM-ddTHH:mm:ssZ. |
Expiration | Waktu kedaluwarsa otorisasi unggah. Untuk video, nilainya adalah 3.000 detik. Setelah kredensial kedaluwarsa, Anda harus menyegarkannya. |
Region | ID wilayah unggah. |