Topik ini menjelaskan cara cepat mengunggah file lokal ke Object Storage Service (OSS) menggunakan metode unggah sederhana. Metode ini mudah digunakan dan cocok untuk skenario yang memerlukan pengunggahan file lokal dengan cepat.
Catatan
Kode contoh dalam topik ini menggunakan ID Wilayah
cn-hangzhouuntuk China (Hangzhou). Secara default, titik akhir publik digunakan untuk mengakses sumber daya di bucket. Jika Anda ingin mengakses sumber daya di bucket menggunakan layanan Alibaba Cloud lainnya di wilayah yang sama dengan bucket, gunakan titik akhir internal. Untuk informasi lebih lanjut tentang wilayah dan titik akhir OSS, lihat Wilayah dan Titik Akhir.Dalam topik ini, kredensial akses dibaca dari variabel lingkungan. Untuk informasi lebih lanjut tentang cara mengonfigurasi kredensial akses, lihat Konfigurasikan Kredensial Akses.
Izin
Secara default, Akun Alibaba Cloud memiliki izin penuh. Pengguna RAM atau Peran RAM di bawah Akun Alibaba Cloud tidak memiliki izin apa pun secara default. Akun Alibaba Cloud atau administrator akun harus memberikan izin operasi melalui RAM Policy atau Kebijakan Bucket.
API | Aksi | Definisi |
PutObject |
| Mengunggah objek. |
| Saat mengunggah objek, jika Anda menentukan tag objek melalui | |
| Saat mengunggah objek, jika metadata objek berisi | |
|
Definisi metode
func (c *Client) PutObject(ctx context.Context, request *PutObjectRequest, optFns ...func(*Options)) (*PutObjectResult, error)
func (c *Client) PutObjectFromFile(ctx context.Context, request *PutObjectRequest, filePath string, optFns ...func(*Options)) (*PutObjectResult, error)Operasi API | Deskripsi |
Client.PutObject | Menjalankan unggah sederhana. Ukuran maksimum objek yang dapat diunggah adalah 5 GiB. Validasi data CRC-64 didukung dan diaktifkan secara default. Grafik bilah kemajuan didukung. Tipe badan permintaan adalah io.Reader. Jika tipe tersebut adalah io.Seeker, pengiriman ulang didukung jika unggah gagal. |
Client.PutObjectFromFile | Operasi ini menyediakan kemampuan yang sama dengan operasi Client.PutObject. Data badan permintaan berasal dari jalur file. |
Parameter permintaan
Parameter | Tipe | Deskripsi |
ctx | context.Context | Konteks permintaan. Anda dapat menggunakan parameter ini untuk menetapkan periode waktu total permintaan. |
request | *PutObjectRequest | Parameter operasi API tertentu. Misalnya, Anda dapat menyetel metode kontrol akses (Acl), mencegah penimpaan (ForbidOverwrite), dan menentukan metadata kustom (Metadata). Untuk informasi lebih lanjut, lihat PutObjectRequest. |
optFns | ...func(*Options) | (Opsional) Parameter konfigurasi tingkat operasi. Untuk informasi lebih lanjut, lihat Options. |
Nilai kembali
Nilai kembali | Tipe | Deskripsi |
result | *PutObjectResult | Nilai kembali operasi API. Parameter ini valid saat err adalah nil. Untuk informasi lebih lanjut, lihat PutObjectResult. |
err | error | Status permintaan. Jika permintaan gagal, err tidak nil. |
Kode contoh
Anda dapat menggunakan kode berikut untuk mengunggah file lokal ke bucket tujuan.
package main
import (
"context"
"flag"
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
// Tentukan variabel global.
var (
region string // Wilayah.
bucketName string // Nama bucket.
objectName string // Nama objek.
)
// Fungsi init digunakan untuk menginisialisasi parameter baris perintah.
func init() {
flag.StringVar(®ion, "region", "", "Wilayah tempat bucket berada.")
flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
flag.StringVar(&objectName, "object", "", "Nama objek.")
}
func main() {
// Parsing parameter baris perintah.
flag.Parse()
// Periksa apakah nama bucket kosong.
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, nama bucket diperlukan")
}
// Periksa apakah wilayah kosong.
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, wilayah diperlukan")
}
// Periksa apakah nama objek kosong.
if len(objectName) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, nama objek diperlukan")
}
// Muat konfigurasi default dan atur penyedia kredensial serta wilayah.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// Buat klien OSS.
client := oss.NewClient(cfg)
// Tentukan jalur dan nama file lokal untuk diunggah, misalnya, /Users/localpath/exampleobject.txt.
localFile := "/Users/localpath/exampleobject.txt"
// Buat permintaan untuk mengunggah objek.
putRequest := &oss.PutObjectRequest{
Bucket: oss.Ptr(bucketName), // Nama bucket.
Key: oss.Ptr(objectName), // Nama objek.
StorageClass: oss.StorageClassStandard, // Tentukan kelas penyimpanan objek sebagai Standard.
Acl: oss.ObjectACLPrivate, // Tentukan izin akses objek sebagai private.
Metadata: map[string]string{
"yourMetadataKey1": "yourMetadataValue1", // Setel metadata objek.
},
}
// Eksekusi permintaan untuk mengunggah objek.
result, err := client.PutObjectFromFile(context.TODO(), putRequest, localFile)
if err != nil {
log.Fatalf("gagal mengunggah objek dari file %v", err)
}
// Cetak hasil unggah objek.
log.Printf("hasil unggah objek dari file:%#v\n", result)
}
Skenario umum
Referensi
Untuk kode contoh lengkap unggah sederhana, lihat contoh put_object.go dan put_object_from_file.go di GitHub.
Untuk informasi lebih lanjut tentang operasi API untuk unggah sederhana, lihat PutObject dan PutObjectFromFile.