Maison >développement back-end >Golang >Comment diffuser des fichiers volumineux sur AWS S3 avec Go ?

Comment diffuser des fichiers volumineux sur AWS S3 avec Go ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-08 04:54:021045parcourir

How to Stream Large Files to AWS S3 with Go?

Diffusez le téléchargement de fichiers sur AWS S3 à l'aide de Go

Défi :

Diffusez un grand volume en plusieurs parties /form-data directement sur AWS S3, minimisant ainsi l'encombrement de la mémoire et du disque.

Solution :

Pour ce faire, nous utiliserons le téléchargeur S3 depuis le github Bibliothèque .com/aws/aws-sdk-go.

Mise en œuvre :

  1. Créez un nouveau programme de téléchargement S3 configuré avec les paramètres souhaités (taille des morceaux, concurrence, etc.).
  2. Ouvrez le fichier à télécharger.
  3. Utilisez la fonction de téléchargement du téléchargeur pour diffuser le fichier sur S3.
  4. Gérez les erreurs ou affichez les résultats du téléchargement.

Exemple de code :

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)
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn