全部产品
Search
文档中心

Object Storage Service:Unduhan streaming menggunakan OSS SDK untuk Python 1.0

更新时间:Aug 16, 2025

Unduhan streaming memungkinkan Anda mengunduh objek sebagai aliran secara bertahap. Jika Anda ingin mengunduh objek besar atau jika pengunduhan memerlukan waktu lama, Anda dapat menggunakan unduhan streaming untuk mengunduh objek secara bertahap.

Catatan penggunaan

  • Dalam topik ini, titik akhir publik wilayah Tiongkok (Hangzhou) digunakan. Jika Anda ingin mengakses OSS dari layanan Alibaba Cloud lainnya di wilayah yang sama dengan OSS, gunakan titik akhir internal. Untuk informasi lebih lanjut tentang wilayah dan titik akhir OSS, lihat Wilayah dan Titik Akhir OSS.

  • Dalam topik ini, instans OSSClient dibuat menggunakan titik akhir OSS. Jika Anda ingin membuat instans OSSClient dengan menggunakan nama domain kustom atau Layanan Token Keamanan (STS), lihat Inisialisasi.

  • Untuk menggunakan unduhan streaming, Anda harus memiliki izin oss:GetObject. Untuk informasi lebih lanjut, lihat Lampirkan Kebijakan Kustom ke Pengguna RAM.

Kode contoh

Berikut adalah contoh kode untuk melakukan unduhan streaming guna mengunduh objek bernama exampleobject.txt dari bucket bernama examplebucket:

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

# Buat objek server.
# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"

# Tentukan ID wilayah yang sesuai dengan titik akhir. Contoh: cn-hangzhou. Parameter ini diperlukan jika Anda menggunakan algoritma tanda tangan V4.
region = "cn-hangzhou"

# Tentukan nama bucket Anda.
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)

# Nilai yang dikembalikan oleh bucket.get_object adalah objek seperti file yang dapat diiterasi.
# Tentukan jalur lengkap objek. Jangan sertakan nama bucket dalam jalur lengkap objek.
object_stream = bucket.get_object('exampleobject.txt')
print(object_stream.read())

# Anda harus memanggil operasi read() untuk membaca objek dari aliran yang dikembalikan oleh get_object sebelum menghitung nilai CRC-64 objek.
if object_stream.client_crc != object_stream.server_crc:
    print("Nilai checksum CRC antara klien dan server tidak konsisten!")

Berikut adalah contoh kode untuk mengunduh data objek bernama exampleobject.txt dari aliran sebagai file bernama examplefile.txt di direktori D:\localpath:

import shutil
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

# Buat objek server.
# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"

# Tentukan ID wilayah yang sesuai dengan titik akhir. Contoh: cn-hangzhou. Parameter ini diperlukan jika Anda menggunakan algoritma tanda tangan V4.
region = "cn-hangzhou"

# Tentukan nama bucket Anda.
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)

# object_stream adalah objek seperti file. Anda dapat menggunakan metode shutil.copyfileobj untuk mengunduh data dari aliran ke file lokal.
# Tentukan jalur lengkap objek. Jangan sertakan nama bucket dalam jalur lengkap objek.
object_stream = bucket.get_object('exampleobject.txt')
# Unduh objek sebagai file lokal di jalur yang ditentukan. Jika file dengan nama yang sama sudah ada di jalur tersebut, objek yang diunduh akan menimpa file tersebut. Jika tidak, file yang diunduh disimpan di jalur tersebut.
# Jika Anda tidak menentukan jalur untuk objek yang diunduh, objek yang diunduh akan disimpan ke jalur proyek tempat program contoh milik.
with open('D:\\localpath\\examplefile.txt', 'wb') as local_fileobj:
    shutil.copyfileobj(object_stream, local_fileobj)

Berikut adalah contoh kode untuk menyalin data objek bernama exampleobject.txt dari aliran ke objek bernama exampleobjectnew.txt:

import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

# Buat objek server.
# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"

# Tentukan ID wilayah yang sesuai dengan titik akhir. Contoh: cn-hangzhou. Parameter ini diperlukan jika Anda menggunakan algoritma tanda tangan V4.
region = "cn-hangzhou"

# Tentukan nama bucket Anda.
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)

# object_stream adalah objek yang dapat diiterasi. Anda dapat menyalin data objek dari aliran ke objek lain di bucket yang sama.
# Tentukan jalur lengkap objek. Jangan sertakan nama bucket dalam jalur lengkap objek.
object_stream = bucket.get_object('exampleobject.txt')
# Tentukan jalur lengkap objek tujuan. Jangan sertakan nama bucket dalam jalur lengkap objek.
bucket.put_object('exampleobjectnew.txt', object_stream)

Referensi

  • Untuk kode contoh lengkap yang digunakan untuk melakukan unduhan streaming, kunjungi GitHub.

  • Untuk informasi lebih lanjut tentang operasi API yang dapat Anda panggil untuk melakukan unduhan streaming, lihat GetObject.