首页 > 后端开发 > Golang > 正文

如何使用 Go 将文件上传到 AWS S3?

Susan Sarandon
发布: 2024-11-06 12:28:02
原创
256 人浏览过

How to Stream File Upload to AWS S3 Using Go?

使用 Go 将文件上传到 AWS S3

使用 Go 中的上传管理器可以将大文件直接上传到 AWS S3,同时最小化内存和文件磁盘占用空间。操作方法如下:

使用上传管理器

  1. 导入必要的库:

    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"
    )
    登录后复制
  2. 创建 AWS 配置:

    awsConfig := &aws.Config{
        Region: aws.String("us-west-2"),
    }
    登录后复制

    您可以选择提供您自己的访问密钥并如果需要,请在配置中添加密钥。

  3. 初始化新会话和上传器:

    sess := session.Must(session.NewSession(awsConfig))
    uploader := s3manager.NewUploader(sess)
    登录后复制
  4. 自定义上传器的参数(可选) :

    // 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
    })
    登录后复制
  5. 打开要上传的文件:

    f, err := os.Open(filename)
    if err != nil {
        fmt.Printf("failed to open file %q, %v\n", filename, err)
        return
    }
    登录后复制
  6. 使用上传器上传文件:

    result, err := uploader.Upload(&s3manager.UploadInput{
        Bucket: aws.String(myBucket),
        Key:    aws.String(myKey),
        Body:   f,
    })
    登录后复制
  7. 处理任何潜在错误:

    if err != nil {
        fmt.Printf("failed to upload file, %v\n", err)
        return
    }
    登录后复制
  8. 打印上传location:

    fmt.Printf("file uploaded to, %s\n", result.Location)
    登录后复制

通过这种方式利用上传管理器,您可以以最少的资源消耗将大文件直接流式传输和上传到 AWS S3。

以上是如何使用 Go 将文件上传到 AWS S3?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!