Téléchargement de fichiers en streaming sur AWS S3 avec une mémoire et une empreinte disque de fichiers minimales
Problème : Vous devez télécharger un grand fichier de données multipart/form directement sur AWS S3 tout en minimisant l'utilisation de la mémoire et du disque de fichiers.
Solution : Utilisez AWS S3 Uploader en suivant les étapes suivantes :
Exemple de code :
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" ) // Configure Amazon S3 credentials and connection var accessKey = "" var accessSecret = "" func main() { // Determine if your AWS credentials are configured globally var awsConfig *aws.Config if accessKey == "" || accessSecret == "" { // No credentials provided, load the default credentials awsConfig = &aws.Config{ Region: aws.String("us-west-2"), } } else { // Static credentials provided awsConfig = &aws.Config{ Region: aws.String("us-west-2"), Credentials: credentials.NewStaticCredentials(accessKey, accessSecret, ""), } } // Create an AWS session with the configured credentials sess := session.Must(session.NewSession(awsConfig)) // Create an uploader with customized configuration uploader := s3manager.NewUploader(sess, func(u *s3manager.Uploader) { u.PartSize = 5 * 1024 * 1024 // Set the part size to 5MB u.Concurrency = 2 // Set the concurrency to 2 }) // Open the file to be uploaded f, err := os.Open("file_name.zip") if err != nil { fmt.Printf("Failed to open file: %v", err) return } defer f.Close() // Upload the file to S3 result, err := uploader.Upload(&s3manager.UploadInput{ Bucket: aws.String("myBucket"), Key: aws.String("file_name.zip"), Body: f, }) if err != nil { fmt.Printf("Failed to upload file: %v", err) return } fmt.Printf("File uploaded to: %s", result.Location) }
En utilisant S3 Uploader et en diffusant le fichier en streaming, vous pouvez minimiser l'utilisation de la mémoire et du disque de fichiers pendant le processus de téléchargement, garantissant ainsi une gestion efficace des fichiers volumineux.
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!