Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menstrim Fail Besar ke AWS S3 dengan Go?

Bagaimana untuk Menstrim Fail Besar ke AWS S3 dengan Go?

Susan Sarandon
Susan Sarandonasal
2024-11-08 04:54:021045semak imbas

How to Stream Large Files to AWS S3 with Go?

Strim Fail Muat Naik ke AWS S3 Menggunakan Go

Cabaran:

Strim berbilang bahagian yang besar /form-data fail terus ke AWS S3, meminimumkan memori dan jejak cakera.

Penyelesaian:

Untuk mencapainya, kami akan menggunakan Pemuat Naik S3 daripada github .com/aws/aws-sdk-go library.

Pelaksanaan:

  1. Buat pemuat naik S3 baharu yang dikonfigurasikan dengan parameter yang diingini (saiz ketulan, konkurensi, dll.).
  2. Buka fail untuk dimuat naik.
  3. Gunakan fungsi Muat Naik pemuat naik untuk menstrim fail ke S3.
  4. Kendalikan ralat atau paparkan hasil muat naik.

Contoh Kod:

import (
    "github.com/aws/aws-sdk-go/aws/session"
    "github.com/aws/aws-sdk-go/service/s3/s3manager"
)

func main() {
    // Create an S3 uploader with custom options
    uploader := s3manager.NewUploader(session.Must(session.NewSession()), func(u *s3manager.Uploader) {
        u.PartSize = 5 * 1024 * 1024 // 5MB part size
        u.Concurrency = 2           // 2 concurrent uploads
    })

    // Open the file for upload
    f, err := os.Open("file.txt")
    if err != nil {
        panic(err)
    }
    defer f.Close()

    // Stream file to S3
    result, err := uploader.Upload(&s3manager.UploadInput{
        Bucket: aws.String("my-bucket"),
        Key:    aws.String("file.txt"),
        Body:   f,
    })

    if err != nil {
        panic(err)
    }

    // Display uploaded file information
    fmt.Printf("File uploaded to: %s", result.Location)
}

Atas ialah kandungan terperinci Bagaimana untuk Menstrim Fail Besar ke AWS S3 dengan Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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