全部产品
Search
文档中心

Object Storage Service:Unduhan bersyarat (Browser.js SDK)

更新时间:Nov 30, 2025

Saat mengunduh file (objek), Anda dapat menetapkan satu atau beberapa kondisi. File tersebut hanya akan diunduh jika kondisi yang ditentukan terpenuhi. Jika tidak, sistem akan mengembalikan error dan proses unduhan tidak dimulai.

Catatan penggunaan

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

  • Jika Anda ingin mengakses bucket OSS dari browser tetapi bucket tersebut belum dikonfigurasi dengan aturan CORS, browser akan menolak permintaan tersebut. Oleh karena itu, Anda harus mengonfigurasi aturan CORS pada bucket untuk mengaksesnya dari browser. Untuk informasi selengkapnya, lihat Instalasi.

  • Dalam kebanyakan kasus, OSS SDK untuk Browser.js digunakan di browser. Untuk mencegah pasangan AccessKey Anda terekspos, kami menyarankan agar Anda menggunakan 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.

Kode contoh

Kode berikut memberikan contoh unduhan bersyarat:

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

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

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

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

    // Unggah file.  
    upload.addEventListener('click', () => {
      // Tentukan konten file yang akan diunggah.
      const file = new Blob(['examplecontent'])
      // Tentukan path lengkap file yang akan diunggah. Contohnya, exampledir/exampleobject.txt.
      const fileName = 'exampledir/exampleobject.txt'
      const result = client.put(fileName, file).then(r => console.log(r))
    })

    // Unduh file.
    download.addEventListener('click', () => {
      // Tentukan rentang byte yang akan diunduh.
      const start = 1, end = 5
      client.get('exampledir/exampleobject.txt', {
        headers: {
          // Tentukan waktu dalam header permintaan If-Modified-Since. File akan diunduh jika waktu yang ditentukan lebih awal daripada waktu modifikasi aktual file. Jika waktu yang ditentukan sama dengan atau lebih baru daripada waktu modifikasi aktual, respons 304 Not Modified akan dikembalikan.
          "If-Modified-Since": new Date("1970-01-01").toGMTString()
          // Tentukan waktu dalam header permintaan If-Unmodified-Since. File akan diunduh jika waktu yang ditentukan sama dengan atau lebih baru daripada waktu modifikasi aktual file. Jika waktu yang ditentukan lebih awal daripada waktu modifikasi aktual, respons 412 Precondition Failed akan dikembalikan.
          //"If-Unmodified-Since": new Date(1970-01-01).toGMTString()
          // Tentukan ETag dalam header permintaan If-Match. File akan diunduh jika ETag yang ditentukan sesuai dengan ETag file. Jika ETag yang ditentukan tidak sesuai, respons 412 Precondition Failed akan dikembalikan.
          //"If-Match": '5B3C1A2E0563E1B002CC607C****'
          // Tentukan ETag dalam header permintaan If-None-Match. File akan diunduh jika ETag yang ditentukan tidak sesuai dengan ETag file. Jika ETag yang ditentukan sesuai, respons 304 Not Modified akan dikembalikan.
          //"If-None-Match": '5B3C1A2E0563E1B002CC607C****'
        },
      }).then(r => {
        if (r.content.length > 0) {                
          const newBlob = new Blob([r.content], { type: r.res.headers['content-type'] });
          const link = document.createElement('a')
          link.href = window.URL.createObjectURL(newBlob)
          link.download = 'foo.txt'
          link.click()
          window.URL.revokeObjectURL(link.href)
        } else {
          console.log('Kode error', r.res.status)
          console.log('Tidak ada item yang memenuhi kondisi untuk diunduh')
        }
      })
    })

  </script>
</body>

</html>

Referensi

  • Untuk kode contoh lengkap mengenai unduhan bersyarat, lihat contoh di GitHub.

  • Untuk informasi selengkapnya mengenai operasi API, lihat GetObject.