全部产品
Search
文档中心

ApsaraVideo VOD:Unggah file menggunakan OSS SDK

更新时间:Nov 05, 2025

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.

    Catatan
    • Bidang UploadAddress berisi informasi tentang bucket OSS tujuan. Bidang UploadAuth berisi 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.

      • VideoId dikembalikan saat Anda mendapatkan URL unggah dan kredensial untuk video.

      • ImageId dikembalikan saat Anda mendapatkan URL unggah dan kredensial untuk gambar.

      • MediaId dikembalikan 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.

    Penting
    • Pasangan 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.

    Catatan

    Untuk informasi lebih lanjut tentang skenario di mana STS dapat digunakan, lihat Perbandingan antara kredensial dan STS.

Persyaratan

Penting
  • Java 1.8 atau yang lebih baru diperlukan.

  • Anda dapat menjalankan perintah java -version di 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)

Catatan

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 {

    /**
     * deskripsi

Referensi: 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.