To upload images to aws aws s3 first need to know the region is region, also you need to know the name of the storage barrels, followed by Access key ID and Secret access key
package handler import ( "bytes" "io/ioutil" "log" "net/http" "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" "github.com/gin-gonic/gin" "go.uber.org/zap" "gopkg.in/yaml.v2" ) type conf struct { AccessKeyID string `yaml:"AccessKeyID"` SecretAccessKey string `yaml:"SecretAccessKey"` S3Region string `yaml:"S3Region"` S3Bucket string `yaml:"S3Bucket"` } func (c *conf) GetConf() *conf { yamlFile, err := ioutil.ReadFile("conf/app.yaml") if err != nil { log.Printf("yamlFile.Get err #%v ", err) } err = yaml.Unmarshal(yamlFile, c) if err != nil { log.Fatalf("Unmarshal: %v", err) } return c } var config conf func UploadDocument(c *gin.Context) { config.GetConf() AccessKeyID := config.AccessKeyID SecretAccessKey := config.SecretAccessKey S3Region := config.S3Region S3Bucket := config.S3Bucket logger := c.MustGet("logger").(*zap.SugaredLogger) fileHeader, err := c.FormFile("file") f, err := fileHeader.Open() var size int64 = fileHeader.Size buffer := make([]byte, size) f.Read(buffer) creds := credentials.NewStaticCredentials(AccessKeyID, SecretAccessKey, "") s, err := session.NewSession(&aws.Config{ Region: aws.String(S3Region), Credentials: creds, }) if err != nil { logger.Errorw("An error occurs when processing file uploading", "error", err) } _, err = s3.New(s).PutObject(&s3.PutObjectInput{ Bucket: aws.String(S3Bucket), Key: aws.String("myfolder" + "/" + fileHeader.Filename), ACL: aws.String("private"), Body: bytes.NewReader(buffer), ContentLength: aws.Int64(size), ContentType: aws.String(http.DetectContentType(buffer)), ContentDisposition: aws.String("attachment"), }) if err != nil { logger.Errorw("An error occurs when processing file uploading", "error", err) } }
The above is a request format postman