Le téléchargement de fichiers volumineux directement sur AWS S3 tout en minimisant la mémoire et l'empreinte disque des fichiers peut être obtenu à l'aide du gestionnaire de téléchargement dans Go. Voici comment :
Importez les bibliothèques nécessaires :
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" )
Créez une configuration AWS :
awsConfig := &aws.Config{ Region: aws.String("us-west-2"), }
Vous pouvez éventuellement fournir votre propre clé d'accès et votre propre clé secrète dans la configuration si nécessaire.
Initialisez une nouvelle session et un téléchargeur :
sess := session.Must(session.NewSession(awsConfig)) uploader := s3manager.NewUploader(sess)
Personnaliser les paramètres du téléchargeur (facultatif) :
// 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 })
Ouvrez le fichier à télécharger :
f, err := os.Open(filename) if err != nil { fmt.Printf("failed to open file %q, %v\n", filename, err) return }
Téléchargez le fichier à l'aide du téléchargeur :
result, err := uploader.Upload(&s3manager.UploadInput{ Bucket: aws.String(myBucket), Key: aws.String(myKey), Body: f, })
Gérez les erreurs potentielles :
if err != nil { fmt.Printf("failed to upload file, %v\n", err) return }
Imprimez le téléchargement emplacement :
fmt.Printf("file uploaded to, %s\n", result.Location)
En utilisant le gestionnaire de téléchargement de cette manière, vous pouvez diffuser et télécharger des fichiers volumineux directement sur AWS S3 avec une consommation de ressources minimale.
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!