首頁 > 後端開發 > Golang > 主體

如何使用 Go 將檔案上傳到 AWS S3?

Susan Sarandon
發布: 2024-11-06 12:28:02
原創
310 人瀏覽過

How to Stream File Upload to AWS S3 Using Go?

使用Go 將檔案上傳到AWS S3

使用Go 中的上傳管理器可以將大檔案直接上傳到AWS S3,同時最小化記憶體和檔案磁碟佔用空間。操作方法如下:

使用上傳管理器

  1. 匯入必要的函式庫:

    import (
        "github.com/aws/aws-sdk-go/aws/credentials"
        "github.com/aws/aws-sdk-go/aws"
        "github.com/aws/aws-sdk-go/aws/session"
        "github.com/aws/aws-sdk-go/service/s3/s3manager"
    )
    登入後複製
  2. 建立AWS 配置:

    awsConfig := &aws.Config{
        Region: aws.String("us-west-2"),
    }
    登入後複製

    如果需要,您可以選擇在設定中提供自己的存取金鑰和秘密金鑰。

  3. 初始化新會話和上傳器:

    sess := session.Must(session.NewSession(awsConfig))
    uploader := s3manager.NewUploader(sess)
    登入後複製
  4. 自訂上傳器參數(選購):

    // Set the part size, concurrency, and max upload parts
    uploader := s3manager.NewUploader(sess, func(u *s3manager.Uploader) {
        u.PartSize = 5 * 1024 * 1024 // 5MB is the minimum allowed part size
        u.Concurrency = 2            // Default is 5
    })
    登入後複製
  5. 自訂上傳器參數(選購):
  6. 自訂上傳器參數(選購):
    f, err := os.Open(filename)
    if err != nil {
        fmt.Printf("failed to open file %q, %v\n", filename, err)
        return
    }
    登入後複製
  7. 自訂上傳器參數(選購):

    result, err := uploader.Upload(&s3manager.UploadInput{
        Bucket: aws.String(myBucket),
        Key:    aws.String(myKey),
        Body:   f,
    })
    登入後複製
  8. 開啟要上傳的檔案:

    if err != nil {
        fmt.Printf("failed to upload file, %v\n", err)
        return
    }
    登入後複製
  9. 使用上傳器上傳檔案:

    fmt.Printf("file uploaded to, %s\n", result.Location)
    登入後複製

處理任何潛在錯誤:列印上傳內容location:透過這種方式利用上傳管理器,您可以以最少的資源消耗將大檔案直接串流和上傳到AWS S3。

以上是如何使用 Go 將檔案上傳到 AWS S3?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板