/
s3.go
37 lines (30 loc) 路 782 Bytes
/
s3.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package aws
import (
"context"
"mime/multipart"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/s3/s3manager"
)
type S3Bucket struct {
ctx context.Context
sess *session.Session
bucket string
}
func NewS3(ctx context.Context, bucket string, sess *session.Session) *S3Bucket {
return &S3Bucket{
ctx: ctx,
sess: sess,
bucket: bucket,
}
}
func (s *S3Bucket) UploadObject(key string, file multipart.File) (*s3manager.UploadOutput, error) {
uploader := s3manager.NewUploader(s.sess)
output, err := uploader.UploadWithContext(s.ctx, &s3manager.UploadInput{
Bucket: aws.String(s.bucket),
ACL: aws.String("public-read"),
Key: aws.String(key),
Body: file,
})
return output, err
}