全部产品
Search
文档中心

Object Storage Service:menyalin objek (browser.js sdk)

更新时间:Nov 30, 2025

Topik ini menjelaskan cara menyalin objek dalam satu bucket atau antar bucket di wilayah yang sama.

Catatan

  • Saat menggunakan alat packaging seperti Webpack dan Browserify, instal OSS SDK untuk Browser.js dengan menjalankan perintah npm install ali-oss.

  • Dalam kebanyakan kasus, OSS SDK untuk Browser.js digunakan di browser. Untuk mencegah pasangan AccessKey Anda terpapar, kami menyarankan penggunaan kredensial akses temporary yang diperoleh dari Security Token Service (STS) untuk mengakses OSS.

    Kredensial akses temporary terdiri atas pasangan AccessKey dan token keamanan. Pasangan AccessKey mencakup ID AccessKey dan Rahasia AccessKey. Untuk informasi selengkapnya tentang cara memperoleh kredensial akses temporary, lihat Gunakan STS untuk otorisasi akses temporary.

  • Bucket sumber dan tujuan untuk operasi salin harus memiliki aturan cross-origin resource sharing (CORS) yang dikonfigurasi. Untuk informasi selengkapnya, lihat Persiapan.

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

Action

Definisi

CopyObject

oss:GetObject

Menyalin objek dalam satu bucket atau antar bucket di wilayah yang sama.

oss:PutObject

oss:GetObjectVersion

Jika Anda menentukan versi objek sumber melalui versionId, izin ini juga diperlukan.

oss:GetObjectTagging

Jika Anda menyalin tag objek melalui x-oss-tagging, izin-izin ini diperlukan.

oss:PutObjectTagging

oss:GetObjectVersionTagging

Jika Anda menentukan tag untuk versi tertentu dari objek sumber melalui versionId, izin ini juga diperlukan.

kms:GenerateDataKey

Saat menyalin objek, jika metadata objek tujuan berisi X-Oss-Server-Side-Encryption: KMS, kedua izin ini diperlukan.

kms:Decrypt

Menyalin objek dalam satu bucket

Kode berikut menunjukkan cara menyalin objek srcobject.txt ke destobject.txt dalam bucket examplebucket.

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <title>Document</title>
</head>

<body>
  <button id='upload'>Upload</button>
  <button id='copy'>Copy</button>
    <!--Impor file SDK.-->
  <script type="text/javascript" src="https://gosspublic.alicdn.com/aliyun-oss-sdk-6.18.0.min.js"></script>
  <script type="text/javascript">
    const client = new OSS({
       // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur yourRegion ke oss-cn-hangzhou.
       region: 'yourRegion',
       authorizationV4: true,
       // ID AccessKey dan Rahasia AccessKey temporary yang diperoleh dari STS.
       accessKeyId: 'yourAccessKeyId',
       accessKeySecret: 'yourAccessKeySecret',
       // Token keamanan yang diperoleh dari STS.
       stsToken: 'yourSecurityToken',
       // Tentukan nama bucket. Contoh: examplebucket.
       bucket: "examplebucket",
     });

    const upload = document.getElementById('upload')
    const copy = document.getElementById('copy')

    // Tentukan konten objek yang akan diunggah.
    const file = new Blob(['examplecontent'])
    // Tentukan path lengkap objek yang akan diunggah. Contoh: srcobject.txt.
    const fileName = 'srcobject.txt'

    // Unggah objek.
    upload.addEventListener('click', () => {
      const result = client.put(fileName, file).then(r => console.log(r))
    })

    // Salin objek.
    copy.addEventListener('click', () => {
      // Tentukan nama objek tujuan.
      client.copy('destobject.txt', fileName
        // Atur header HTTP dan metadata kustom untuk objek tujuan.
        //{
            // Tentukan parameter headers untuk mengatur header HTTP objek tujuan. Jika Anda tidak menentukan parameter ini, objek tujuan akan memiliki header HTTP yang sama dengan objek sumber.
            // headers:{
            //'Cache-Control': 'no-cache',        
            // Operasi salin hanya dilakukan jika ETag objek sumber sesuai dengan ETag yang ditentukan.
            //'if-match': '5B3C1A2E053D763E1B002CC607C5****',
            // Operasi salin hanya dilakukan jika ETag objek sumber tidak sesuai dengan ETag yang ditentukan.
            //'if-none-match': '5B3C1A2E053D763E1B002CC607C5****', 
            // Operasi salin hanya dilakukan jika objek sumber telah dimodifikasi sejak waktu yang ditentukan.
            //'if-modified-since': '2021-12-09T07:01:56.000Z', 
            // Operasi salin hanya dilakukan jika objek sumber belum dimodifikasi sejak waktu yang ditentukan.
            //'if-unmodified-since': '2021-12-09T07:01:56.000Z', 
            // Tentukan daftar kontrol akses (ACL) untuk objek tujuan. Dalam contoh ini, ACL diatur ke private. Artinya hanya pemilik objek dan pengguna yang berwenang yang memiliki izin baca dan tulis. Pengguna lain tidak dapat mengakses objek tersebut.
            //'x-oss-object-acl': 'private', 
            // Tentukan tag untuk objek. Anda dapat menentukan beberapa tag.
            //'x-oss-tagging': 'Tag1=1&Tag2=2',
            // Tentukan apakah objek tujuan yang memiliki nama yang sama akan ditimpa. Dalam contoh ini, nilai diatur ke true untuk mencegah penimpaan.
            //'x-oss-forbid-overwrite': 'true', 
    //},
        // Tentukan parameter meta untuk menyesuaikan metadata objek tujuan. Jika Anda tidak menentukan parameter ini, objek tujuan akan memiliki metadata yang sama dengan objek sumber.
        // meta:{
            // location: 'hangzhou',
            // year: 2015,
            // people: 'mary'
        //}
        // }
      ).then(r => {
        console.log(r.res.status)
      })
    })

  </script>
</body>

</html>

Menyalin objek antar bucket

Kode berikut menunjukkan cara menyalin objek srcobject.txt dari bucket sumber srcbucket ke objek destobject.txt di bucket tujuan destbucket.

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Document</title>
  </head>

  <body>
    <button id="copy">Copy</button>
    <!--Impor file SDK.-->
    <script
      type="text/javascript"
      src="https://gosspublic.alicdn.com/aliyun-oss-sdk-6.18.0.min.js"
    ></script>
    <script type="text/javascript">
      const client = new OSS({
        // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur yourRegion ke oss-cn-hangzhou.
        region: "yourRegion",
        authorizationV4: true,
        // ID AccessKey dan Rahasia AccessKey temporary yang diperoleh dari STS.
        accessKeyId: "yourAccessKeyId",
        accessKeySecret: "yourAccessKeySecret",
        // Token keamanan yang diperoleh dari STS.
        stsToken: "yourSecurityToken",
        // Tentukan nama bucket tujuan.
        bucket: "destbucket",
      });
      const copy = document.getElementById("copy");

      copy.addEventListener("click", () => {
        client
          .copy(
            // Tentukan nama objek tujuan.
            "srcobject.txt",
            // Tentukan nama objek sumber.
            "destobject.txt",
            // Tentukan nama bucket sumber.
            "srcbucket"
          )
          .then((r) => console.log(r));
      });
    </script>
  </body>
</html>

Referensi

  • Untuk kode contoh lengkap tentang menyalin objek, lihat Contoh GitHub.

  • Untuk informasi selengkapnya tentang operasi API untuk menyalin objek, lihat CopyObject.