All Products
Search
Document Center

Object Storage Service:Unduhan yang dapat dilanjutkan (Ruby SDK)

Last Updated:Nov 30, 2025

Pengunduhan file berukuran besar dapat gagal akibat jaringan yang tidak stabil atau pengecualian program. Bahkan setelah beberapa kali percobaan, pengunduhan tersebut terkadang tetap gagal. Untuk mengatasi masalah ini, Object Storage Service (OSS) menyediakan fitur unduhan yang dapat dilanjutkan, yang membagi file menjadi beberapa bagian, mengunduh setiap bagian secara terpisah, lalu menggabungkannya kembali menjadi satu file utuh.

Metode implementasi

Anda dapat menggunakan metode Bucket#resumable_download untuk melakukan unduhan yang dapat dilanjutkan. Metode ini menggunakan parameter-parameter berikut:

Parameter

Deskripsi

Wajib

Nilai default

key

Jalur lengkap file OSS.

Catatan

Jika nilai ETag file yang akan diunduh berubah, pengunduhan akan gagal.

Ya

Tidak ada

file

Jalur lengkap file lokal tempat hasil unduhan disimpan.

Ya

Tidak ada

:cpt_file

File yang mencatat informasi breakpoint. Anda harus memiliki izin menulis untuk file ini.

Catatan
  • Kemajuan unduhan direkam dalam file .cpt. Shard yang telah diunduh disimpan sebagai file.part.N. Jika pengunduhan suatu shard gagal, percobaan unduhan berikutnya akan dilanjutkan dari breakpoint yang terekam dalam file .cpt. Saat Anda memanggil kembali Bucket#resumable_download, tentukan file .cpt yang sama seperti pada percobaan sebelumnya. Setelah file berhasil diunduh, file part dan file .cpt akan dihapus.

  • File .cpt merekam status antara proses unduhan dan mencakup fitur verifikasi. Jangan mengedit file .cpt. Jika file .cpt rusak, unduhan tidak dapat dilanjutkan.

Tidak

file.cpt di folder yang sama dengan file lokal, di mana file adalah nama file lokal tersebut.

:disable_cpt

Menentukan apakah kemajuan unduhan direkam. Nilai yang valid:

  • true: Kemajuan unduhan tidak direkam. Unduhan tidak dapat dilanjutkan jika gagal.

  • false: Kemajuan unduhan direkam. Unduhan dapat dilanjutkan dari breakpoint jika gagal.

Tidak

false

:part_size

Ukuran setiap shard.

Tidak

10 MB

&block

Jika sebuah block diberikan saat pemanggilan, kemajuan unduhan akan ditangani oleh block tersebut.

Tidak

Tidak ada

Untuk informasi selengkapnya, lihat dokumentasi API.

Kode contoh

Kode berikut memberikan contoh cara melakukan unduhan yang dapat dilanjutkan.

require 'aliyun/oss'

client = Aliyun::OSS::Client.new(
  # Titik akhir wilayah China (Hangzhou) digunakan sebagai contoh. Tentukan titik akhir yang sesuai.
  endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
  # Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
  access_key_id: ENV['OSS_ACCESS_KEY_ID'],
  access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)

# Tentukan nama bucket, misalnya examplebucket.
bucket = client.get_bucket('examplebucket')
# Atur key ke jalur lengkap objek. Jalur lengkap tidak boleh mengandung nama bucket. Contohnya: exampledir/example.zip.
# Atur file ke jalur lengkap file lokal. Contohnya: /tmp/example.zip.
bucket.resumable_download('exampledir/example.zip', '/tmp/example.zip') do |p|
  puts "Progress: #{p}"
end

bucket.resumable_download(
  'exampledir/example.zip', '/tmp/example.zip',
  # Atur cpt_file ke jalur file yang mencatat informasi breakpoint.
  :part_size => 100 * 1024, :cpt_file => '/tmp/example.zip.cpt') { |p|
  puts "Progress: #{p}"
}

Referensi

Untuk informasi selengkapnya mengenai operasi API yang digunakan untuk unduhan yang dapat dilanjutkan, lihat GetObject.