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
Libérer: 2024-11-08 04:54:02
original
1138 Les gens l'ont consulté

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)
}
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal