Maison >développement back-end >Golang >Comment puis-je diffuser efficacement de gros fichiers de données multiparts/formulaires vers AWS S3 avec Go ?
Diffusez le téléchargement de fichiers vers AWS S3 avec Go
Le streaming direct de gros fichiers de données multiparts/formulaires vers AWS S3 est un moyen efficace de minimiser utilisation de la mémoire et disque de fichiers empreinte.
Solution
Utilisez le gestionnaire de téléchargement du kit AWS SDK for Go pour diffuser des fichiers directement sur S3. Voici un exemple :
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) }
En utilisant le gestionnaire de téléchargement avec des paramètres personnalisés, vous pouvez configurer la taille des parties, le niveau de simultanéité et le nombre maximum de parties de téléchargement pour optimiser le processus de streaming.
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!