Topik ini menjelaskan cara menggunakan modul Uploader baru di Python SDK V2 untuk mengunggah file.
Catatan
Kode contoh dalam topik ini menggunakan titik akhir publik untuk Wilayah China (Hangzhou). ID wilayah adalah
cn-hangzhou. Jika Anda ingin mengakses OSS dari layanan Alibaba Cloud lainnya di wilayah yang sama, gunakan titik akhir internal. Untuk informasi lebih lanjut tentang wilayah dan titik akhir yang didukung oleh OSS, lihat Wilayah dan Titik Akhir OSS.Untuk melakukan unggahan, Anda memerlukan izin
oss:PutObject. Untuk informasi lebih lanjut, lihat Memberikan Izin Kustom ke Pengguna RAM.
Definisi Metode
Pengenalan Manajer Unggah
Modul Uploader baru di Python SDK V2 menyediakan metode unggah terpadu yang mengabstraksi detail implementasi dasar untuk menyederhanakan proses unggahan file.
Uploader menggunakan metode unggah multi-bagian untuk membagi file atau aliran menjadi beberapa bagian lalu mengunggah bagian-bagian tersebut secara bersamaan. Proses ini meningkatkan kinerja unggahan.
Uploader juga mendukung fitur unggah yang dapat dilanjutkan. Selama proses unggah, Uploader mencatat status bagian yang telah selesai. Jika unggahan terganggu oleh masalah seperti kesalahan jaringan atau keluar program yang tidak terduga, Anda dapat melanjutkan unggahan dari titik pemberhentian yang tercatat.
Tabel berikut menjelaskan metode umum dari Uploader.
class Uploader:
...
def uploader(self, **kwargs) -> Uploader:
...
def upload_file(self, request: models.PutObjectRequest, filepath: str, **kwargs: Any) -> UploadResult:
...
def upload_from(self, request: models.PutObjectRequest, reader: IO[bytes], **kwargs: Any) -> UploadResult:
...Parameter Permintaan
Parameter | Tipe | Deskripsi |
request | PutObjectRequest | Parameter permintaan untuk mengunggah objek. Parameter ini sama dengan parameter untuk metode PutObject. Untuk informasi lebih lanjut, lihat PutObjectRequest |
reader | IO[bytes] | Aliran data yang akan diunggah |
filepath | str | Path file lokal |
**kwargs | Any | (Opsional) Parameter apa pun. Tipe adalah kamus. |
Parameter Respons
Tipe | Deskripsi |
UploadResult | Parameter respons untuk mengunggah objek. Untuk informasi lebih lanjut, lihat UploadResult |
Saat menggunakan client.uploader untuk menginisialisasi instance manajer unggah, Anda dapat menentukan opsi konfigurasi untuk menyesuaikan perilaku unggahan. Opsi ini juga dapat ditentukan untuk setiap pemanggilan API unggahan guna menyesuaikan perilaku untuk objek tertentu. Misalnya, Anda dapat menentukan ukuran bagian.
Tetapkan parameter konfigurasi untuk uploader
uploader = client.uploader(part_size=10 * 1024 * 1024)Tetapkan parameter konfigurasi untuk setiap permintaan unggahan
result = uploader.upload_file(oss.PutObjectRequest( bucket="example_bucket", key="example_key", ), filepath="/local/dir/example", part_size=10 * 1024 * 1024, )
Tabel berikut menjelaskan opsi konfigurasi umum.
Parameter | Tipe | Deskripsi |
part_size | int | Menentukan ukuran bagian. Nilai defaultnya adalah 6 MiB. |
parallel_num | int | Menentukan jumlah tugas unggahan bersamaan. Nilai defaultnya adalah 3. Parameter ini membatasi konkurensi untuk satu panggilan, bukan konkurensi global. |
leave_parts_on_error | bool | Menentukan apakah akan mempertahankan bagian yang diunggah ketika unggahan gagal. Secara default, bagian-bagian tersebut tidak dipertahankan. |
enable_checkpoint | bool | Menentukan apakah akan mengaktifkan unggah yang dapat dilanjutkan. Secara default, fitur ini dinonaktifkan. Catatan Parameter enable_checkpoint hanya valid untuk metode upload_file. Metode upload_from tidak mendukung parameter ini. |
checkpoint_dir | str | Menentukan path tempat file rekaman disimpan, misalnya, /local/dir/. Parameter ini hanya valid ketika enable_checkpoint diatur ke true. |
Untuk definisi metode lengkap dari manajer unggah file, lihat Uploader.
Kode Contoh
Gunakan kode berikut untuk mengunggah file lokal ke bucket menggunakan manajer unggah.
import argparse
import alibabacloud_oss_v2 as oss
# Buat parser argumen baris perintah dan jelaskan tujuan skrip: contoh unggah file
parser = argparse.ArgumentParser(description="contoh unggah file")
# Tambahkan argumen baris perintah --region, yang menentukan wilayah tempat bucket berada. Ini adalah parameter yang diperlukan.
parser.add_argument('--region', help='Wilayah tempat bucket berada.', required=True)
# Tambahkan argumen baris perintah --bucket, yang menentukan nama bucket tempat file diunggah. Ini adalah parameter yang diperlukan.
parser.add_argument('--bucket', help='Nama bucket.', required=True)
# Tambahkan argumen baris perintah --endpoint, yang menentukan nama domain yang dapat digunakan layanan lain untuk mengakses OSS. Ini adalah parameter opsional.
parser.add_argument('--endpoint', help='Nama domain yang dapat digunakan layanan lain untuk mengakses OSS')
# Tambahkan argumen baris perintah --key, yang menentukan kunci objek (file) di OSS. Ini adalah parameter yang diperlukan.
parser.add_argument('--key', help='Nama objek.', required=True)
# Tambahkan argumen baris perintah --file_path, yang menentukan path file lokal yang akan diunggah. Ini adalah parameter yang diperlukan, misalnya, "/Users/yourLocalPath/yourFileName".
parser.add_argument('--file_path', help='Path file unggahan.', required=True)
def main():
# Parse argumen baris perintah untuk mendapatkan nilai yang diberikan pengguna.
args = parser.parse_args()
# Muat informasi otentikasi yang diperlukan untuk mengakses OSS dari variabel lingkungan untuk verifikasi identitas.
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
# Buat objek konfigurasi menggunakan konfigurasi default SDK dan atur penyedia kredensial.
cfg = oss.config.load_default()
cfg.credentials_provider = credentials_provider
# Atur properti region objek konfigurasi berdasarkan argumen baris perintah yang diberikan pengguna.
cfg.region = args.region
# Jika titik akhir kustom diberikan, perbarui properti endpoint dalam objek konfigurasi.
if args.endpoint is not None:
cfg.endpoint = args.endpoint
# Inisialisasi klien OSS menggunakan konfigurasi di atas untuk mempersiapkan interaksi dengan OSS.
client = oss.Client(cfg)
# Buat objek untuk mengunggah file.
uploader = client.uploader()
# Panggil metode untuk melakukan operasi unggah file.
result = uploader.upload_file(
oss.PutObjectRequest(
bucket=args.bucket, # Tentukan bucket tujuan.
key=args.key, # Tentukan nama file di OSS.
),
filepath=args.file_path # Tentukan lokasi file lokal.
)
# Cetak informasi tentang hasil unggahan, termasuk kode status, ID permintaan, dan Content-MD5.
print(f'kode status: {result.status_code},'
f' ID permintaan: {result.request_id},'
f' content md5: {result.headers.get("Content-MD5")},'
f' etag: {result.etag},'
f' hash crc64: {result.hash_crc64},'
f' ID versi: {result.version_id},'
f' waktu server: {result.headers.get("x-oss-server-time")},'
)
# Saat skrip ini dieksekusi langsung, panggil fungsi utama untuk memulai logika pemrosesan.
if __name__ == "__main__":
main() # Titik masuk skrip. Alur program dimulai dari sini.Skenario
Referensi
Untuk informasi lebih lanjut tentang manajer unggah, lihat Panduan Pengembang.
Untuk contoh lengkap manajer unggah, lihat upload_file.py dan upload_from.py.