全部产品
Search
文档中心

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

更新时间:Nov 30, 2025

Saat menggunakan unggah yang dapat dilanjutkan untuk mengunggah file ke Object Storage Service (OSS), Anda dapat menentukan file titik pemeriksaan. Jika proses unggah terganggu oleh error jaringan atau crash program, proses tersebut akan dilanjutkan dari posisi yang dicatat dalam file titik pemeriksaan.

Implementasi

Unggah yang dapat dilanjutkan membagi file menjadi beberapa bagian dan mengunggahnya secara terpisah. Setelah semua bagian diunggah, bagian-bagian tersebut digabungkan menjadi satu file utuh.

Anda dapat menggunakan metode Bucket#resumable_upload untuk melakukan unggah yang dapat dilanjutkan. Metode ini mencakup parameter berikut:

Parameter

Deskripsi

Wajib

Nilai default

key

Jalur lengkap file yang akan diunggah ke OSS.

Ya

Tidak ada

file

Jalur lengkap file lokal yang akan diunggah.

Catatan

Jika nilai ETag file lokal berubah selama proses unggah, unggah akan gagal.

Ya

Tidak ada

:cpt_file

File yang digunakan untuk mencatat informasi titik putus. Anda harus memiliki izin tulis untuk file ini.

Catatan
  • Jika pengunggahan suatu bagian gagal, percobaan unggah berikutnya akan dilanjutkan dari titik putus yang dicatat dalam file .cpt. Saat Anda memanggil kembali Bucket#resumable_upload, tentukan file .cpt yang sama. File .cpt akan dihapus setelah unggah selesai.

  • File .cpt mencatat status antara proses unggah dan menyertakan fitur validasi. Jangan mengedit file .cpt. Jika file .cpt rusak, unggah tidak dapat dilanjutkan.

Tidak

File file.cpt di direktori yang sama dengan file lokal. file merepresentasikan nama file lokal.

:disable_cpt

Menentukan apakah progres unggah direkam. Nilai yang valid:

  • true: Progres unggah tidak direkam. Unggah tidak dapat dilanjutkan jika gagal.

  • false: Progres unggah direkam. Jika unggah gagal, proses dilanjutkan dari titik putus.

Tidak

false

:part_size

Ukuran setiap bagian.

Tidak

4 MB

&block

Jika sebuah block diberikan saat pemanggilan, progres unggah akan ditangani oleh block tersebut.

Tidak

Tidak ada

Kode contoh

Kode berikut menunjukkan contoh cara melakukan unggah yang dapat dilanjutkan.

require 'aliyun/oss'

client = Aliyun::OSS::Client.new(
  # Titik akhir wilayah China (Hangzhou) digunakan sebagai contoh. Tentukan titik akhir yang sebenarnya.
  endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
  # Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
  access_key_id: ENV['OSS_ACCESS_KEY_ID'],
  access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)
# Tetapkan nama bucket. Misalnya, examplebucket.
bucket = client.get_bucket('examplebucket')
# Tetapkan key ke jalur lengkap objek. Jalur lengkap tidak boleh mengandung nama bucket. Misalnya, exampledir/example.zip.
# Tetapkan file ke jalur lengkap file lokal. Misalnya, /tmp/example.zip.
bucket.resumable_upload('exampledir/example.zip', '/tmp/example.zip') do |p|
  puts "Progress: #{p}"
end

bucket.resumable_upload(
  'exampledir/example.zip', '/tmp/example.zip',
  :part_size => 100 * 1024, :cpt_file => '/tmp/example.zip.cpt') { |p|
  puts "Progress: #{p}"
}