Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah saya boleh menstrim fail berbilang bahagian/data bentuk yang besar ke AWS S3 dengan cekap dengan Go?
Strim Muat Naik Fail ke AWS S3 dengan Go
Menstrim terus fail berbilang bahagian/data bentuk besar ke AWS S3 ialah cara yang cekap untuk meminimumkan penggunaan memori dan cakera fail jejak.
Penyelesaian
Gunakan pengurus muat naik AWS SDK for Go untuk menstrim fail terus ke S3. Berikut ialah contoh:
package main import ( "fmt" "os" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/credentials" "github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/service/s3/s3manager" ) var ( filename = "file_name.zip" myBucket = "myBucket" myKey = "file_name.zip" accessKey = "" accessSecret = "" ) func main() { var awsConfig *aws.Config if accessKey == "" || accessSecret == "" { awsConfig = &aws.Config{ Region: aws.String("us-west-2"), } } else { awsConfig = &aws.Config{ Region: aws.String("us-west-2"), Credentials: credentials.NewStaticCredentials(accessKey, accessSecret, ""), } } sess := session.Must(session.NewSession(awsConfig)) uploader := s3manager.NewUploader(sess, func(u *s3manager.Uploader) { u.PartSize = 5 * 1024 * 1024 u.Concurrency = 2 }) f, err := os.Open(filename) if err != nil { fmt.Printf("failed to open file %q, %v", filename, err) return } defer f.Close() result, err := uploader.Upload(&s3manager.UploadInput{ Bucket: aws.String(myBucket), Key: aws.String(myKey), Body: f, }) if err != nil { fmt.Printf("failed to upload file, %v", err) return } fmt.Printf("file uploaded to, %s\n", result.Location) }
Dengan menggunakan pengurus muat naik dengan parameter tersuai, anda boleh mengkonfigurasi saiz bahagian, tahap konkurensi dan kiraan bahagian muat naik maksimum untuk mengoptimumkan proses penstriman.
Atas ialah kandungan terperinci Bagaimanakah saya boleh menstrim fail berbilang bahagian/data bentuk yang besar ke AWS S3 dengan cekap dengan Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!