Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah saya boleh menstrim fail berbilang bahagian/data bentuk yang besar ke AWS S3 dengan cekap dengan Go?

Bagaimanakah saya boleh menstrim fail berbilang bahagian/data bentuk yang besar ke AWS S3 dengan cekap dengan Go?

Linda Hamilton
Lepaskan: 2024-11-09 06:43:02
asal
771 orang telah melayarinya

How can I stream large multipart/form-data files to AWS S3 efficiently with 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)
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan