Topik ini menjelaskan cara mengunduh objek dari bucket ke file lokal.
Catatan
Pada topik ini, digunakan titik akhir publik wilayah China (Hangzhou). Jika Anda mengakses OSS dari layanan Alibaba Cloud lain yang berada di wilayah yang sama dengan OSS, gunakan titik akhir internal. Untuk informasi selengkapnya mengenai wilayah dan titik akhir OSS, lihat Wilayah dan titik akhir.
Pada topik ini, kredensial akses diperoleh dari variabel lingkungan. Untuk informasi selengkapnya tentang cara mengonfigurasi kredensial akses, lihat Konfigurasi kredensial akses.
Pada topik ini, instans OSSClient dibuat menggunakan titik akhir OSS. Jika Anda ingin membuat instans OSSClient menggunakan nama domain kustom atau Security Token Service (STS), lihat Konfigurasi client (Go SDK V1).
Untuk mengunduh objek ke file lokal, Anda harus memiliki izin
oss:GetObject. Untuk informasi selengkapnya, lihat Berikan kebijakan akses kustom kepada RAM user.
Kode contoh
Kode berikut menunjukkan cara mengunduh file exampleobject.txt dari folder exampledir di bucket examplebucket ke path lokal D:\localpath\examplefile.txt.
package main
import (
"log"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
log.Fatalf("Gagal membuat penyedia kredensial: %v", err)
}
// Buat instans OSSClient.
// Setel yourEndpoint ke titik akhir bucket. Misalnya, untuk bucket di wilayah China (Hangzhou), setel titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk bucket di wilayah lain, setel titik akhir ke titik akhir aktual.
// Setel yourRegion ke wilayah tempat bucket berada. Misalnya, untuk bucket di wilayah China (Hangzhou), setel wilayah ke cn-hangzhou. Untuk bucket di wilayah lain, setel wilayah ke wilayah aktual.
clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
clientOptions = append(clientOptions, oss.Region("yourRegion"))
// Setel versi signature.
clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
client, err := oss.New("yourEndpoint", "", "", clientOptions...)
if err != nil {
log.Fatalf("Gagal membuat client OSS: %v", err)
}
// Tentukan nama bucket, misalnya examplebucket.
bucketName := "examplebucket" // Ganti dengan nama bucket yang sebenarnya.
bucket, err := client.Bucket(bucketName)
if err != nil {
log.Fatalf("Gagal mendapatkan bucket: %v", err)
}
// Unduh objek ke file lokal dan simpan ke path lokal yang ditentukan. Jika file lokal yang ditentukan sudah ada, file tersebut akan ditimpa. Jika file lokal yang ditentukan belum ada, file tersebut akan dibuat.
// Jika Anda tidak menentukan path lokal, file yang diunduh akan disimpan ke path lokal proyek tempat program contoh berada.
// Tentukan path lengkap objek, misalnya exampledir/exampleobject.txt, dan path lengkap file lokal, misalnya D:\\localpath\\examplefile.txt. Path lengkap objek tidak boleh mengandung nama bucket.
objectName := "exampledir/exampleobject.txt"
localFilePath := "D:\\localpath\\examplefile.txt"
err = bucket.GetObjectToFile(objectName, localFilePath)
if err != nil {
log.Fatalf("Gagal mengunduh file: %v", err)
}
log.Println("File berhasil diunduh.")
}
Skenario
Referensi
Untuk kode contoh lengkap yang menunjukkan cara mengunduh objek ke file lokal, lihat GitHub.
Untuk informasi selengkapnya tentang operasi API yang digunakan untuk mengunduh objek ke file lokal, lihat GetObjectToFile.