Untitled
unknown
golang
2 years ago
1.7 kB
5
Indexable
package aws import ( "bytes" . "core/logger" "core/models" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/awsutil" "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/aws/aws-sdk-go/service/s3/s3manager" "net/http" "os" ) const TAG_S3 = "[Core_S3]\t" func PutItem(bucketName string, filePath string, fileName, s3Path string) string { file, err := os.Open(filePath) if err != nil { Logger.Error(TAG_S3+"[PutItem]err opening file: %s", err) } defer file.Close() fileInfo, _ := file.Stat() size := fileInfo.Size() buffer := make([]byte, size) // read file content to buffer file.Read(buffer) fileBytes := bytes.NewReader(buffer) fileType := http.DetectContentType(buffer) path := "/" + s3Path + "/" + fileName Logger.Debug(TAG_S3+"[PutItem]path: %s", path) newSession := session.New() var awsConfig *aws.Config awsConfig = &aws.Config{ Credentials: credentials.NewStaticCredentials(models.AWS_ACCESSKEY, models.AWS_SECRETKEY, ""), Region: aws.String("ap-northeast-1"), } svc := s3.New(newSession, awsConfig) params := &s3.PutObjectInput{ Bucket: aws.String(bucketName), Key: aws.String(path), ACL: aws.String("public-read"), Body: fileBytes, ContentLength: aws.Int64(size), ContentType: aws.String(fileType), } resp, err := svc.PutObject(params) if err != nil { Logger.Error(TAG_S3+"[PutItem]bad response: %s", err.Error()) } Logger.Debug(TAG_S3+"[PutItem]response %s", awsutil.StringValue(resp)) return "https://s3-ap-northeast-1.amazonaws.com/" + bucketName + path }
Editor is loading...