使用 Go 中的上传管理器可以将大文件直接上传到 AWS S3,同时最小化内存和文件磁盘占用空间。操作方法如下:
导入必要的库:
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" )
创建 AWS 配置:
awsConfig := &aws.Config{ Region: aws.String("us-west-2"), }
您可以选择提供您自己的访问密钥并如果需要,请在配置中添加密钥。
初始化新会话和上传器:
sess := session.Must(session.NewSession(awsConfig)) uploader := s3manager.NewUploader(sess)
自定义上传器的参数(可选) :
// 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 })
打开要上传的文件:
f, err := os.Open(filename) if err != nil { fmt.Printf("failed to open file %q, %v\n", filename, err) return }
使用上传器上传文件:
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\n", err) return }
打印上传location:
fmt.Printf("file uploaded to, %s\n", result.Location)
通过这种方式利用上传管理器,您可以以最少的资源消耗将大文件直接流式传输和上传到 AWS S3。
以上是如何使用 Go 将文件上传到 AWS S3?的详细内容。更多信息请关注PHP中文网其他相关文章!