书籍列表接口新增参数
This commit is contained in:
@ -2,6 +2,9 @@ package amazons3
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
"github.com/gogf/gf/v2/net/ghttp"
|
||||
"server/utility/oss"
|
||||
|
||||
"github.com/aws/aws-sdk-go/aws"
|
||||
@ -9,65 +12,42 @@ import (
|
||||
"github.com/aws/aws-sdk-go/aws/session"
|
||||
"github.com/aws/aws-sdk-go/service/s3/s3manager"
|
||||
"github.com/gogf/gf/crypto/gmd5"
|
||||
"github.com/gogf/gf/errors/gerror"
|
||||
"github.com/gogf/gf/frame/g"
|
||||
"github.com/gogf/gf/net/ghttp"
|
||||
"github.com/gogf/gf/os/gfile"
|
||||
"github.com/gogf/gf/os/glog"
|
||||
"github.com/gogf/gf/os/gtime"
|
||||
"github.com/gogf/gf/util/grand"
|
||||
)
|
||||
|
||||
type AmazonS3Client struct{}
|
||||
|
||||
func (c *AmazonS3Client) initSess() (*session.Session, error) {
|
||||
key := g.Config().GetString("aws.s3.key")
|
||||
secret := g.Config().GetString("aws.s3.secret")
|
||||
region := g.Config().GetString("aws.s3.region")
|
||||
if len(key) == 0 || len(secret) == 0 {
|
||||
return nil, gerror.New("aws s3 配置错误")
|
||||
}
|
||||
config := &aws.Config{
|
||||
Region: aws.String(region),
|
||||
Credentials: credentials.NewStaticCredentials(key, secret, ""),
|
||||
}
|
||||
sess := session.Must(session.NewSession(config))
|
||||
return sess, nil
|
||||
type AmazonS3Client struct {
|
||||
key string
|
||||
secret string
|
||||
region string
|
||||
bucket string
|
||||
sess *session.Session
|
||||
}
|
||||
|
||||
func (c *AmazonS3Client) Upload(file interface{}) (string, error) {
|
||||
uploadFile, ok := file.(*ghttp.UploadFile)
|
||||
if !ok {
|
||||
return "", gerror.New("参数类型错误")
|
||||
}
|
||||
bucket := g.Config().GetString("aws.s3.bucket")
|
||||
if len(bucket) == 0 {
|
||||
glog.Warning("bucket为空:", bucket)
|
||||
return "", gerror.New("aws s3 配置错误")
|
||||
}
|
||||
sess, err := c.initSess()
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
uploader := s3manager.NewUploader(sess)
|
||||
f, err := uploadFile.Open()
|
||||
var amazonS3Client *AmazonS3Client
|
||||
|
||||
func (c *AmazonS3Client) Upload(file *ghttp.UploadFile, folder string) (string, error) {
|
||||
uploader := s3manager.NewUploader(c.sess)
|
||||
f, err := file.Open()
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
defer f.Close()
|
||||
body := make([]byte, uploadFile.Size)
|
||||
body := make([]byte, file.Size)
|
||||
_, err = f.Read(body)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
key, err := gmd5.Encrypt(uploadFile.Filename + gtime.Datetime() + grand.Digits(6))
|
||||
ext := gfile.Ext(uploadFile.Filename)
|
||||
key, err := gmd5.Encrypt(file.Filename + gtime.Datetime() + grand.Digits(6))
|
||||
ext := gfile.Ext(file.Filename)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
r, err := uploader.Upload(&s3manager.UploadInput{
|
||||
Bucket: aws.String(bucket),
|
||||
Key: aws.String(key + ext),
|
||||
Bucket: aws.String(c.bucket),
|
||||
Key: aws.String(folder + "/" + key + ext),
|
||||
Body: bytes.NewReader(body),
|
||||
})
|
||||
if err != nil {
|
||||
@ -77,16 +57,7 @@ func (c *AmazonS3Client) Upload(file interface{}) (string, error) {
|
||||
}
|
||||
|
||||
func (c *AmazonS3Client) UploadLocalFile(path, name string) (string, error) {
|
||||
bucket := g.Config().GetString("aws.s3.bucket")
|
||||
if len(bucket) == 0 {
|
||||
glog.Warning("bucket为空:", bucket)
|
||||
return "", gerror.New("aws s3 配置错误")
|
||||
}
|
||||
sess, err := c.initSess()
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
uploader := s3manager.NewUploader(sess)
|
||||
uploader := s3manager.NewUploader(c.sess)
|
||||
f, err := gfile.Open(path)
|
||||
if err != nil {
|
||||
return "", err
|
||||
@ -98,7 +69,7 @@ func (c *AmazonS3Client) UploadLocalFile(path, name string) (string, error) {
|
||||
return "", err
|
||||
}
|
||||
r, err := uploader.Upload(&s3manager.UploadInput{
|
||||
Bucket: aws.String(bucket),
|
||||
Bucket: aws.String(c.bucket),
|
||||
Key: aws.String(name),
|
||||
Body: bytes.NewReader(body),
|
||||
})
|
||||
@ -110,5 +81,26 @@ func (c *AmazonS3Client) UploadLocalFile(path, name string) (string, error) {
|
||||
}
|
||||
|
||||
func init() {
|
||||
oss.RegisterClient("amazon_s3", &AmazonS3Client{})
|
||||
ctx := context.Background()
|
||||
key := g.Config().MustGet(ctx, "oss.s3.key").String()
|
||||
secret := g.Config().MustGet(ctx, "oss.s3.secret").String()
|
||||
region := g.Config().MustGet(ctx, "oss.s3.region").String()
|
||||
bucket := g.Config().MustGet(ctx, "oss.s3.bucket").String()
|
||||
|
||||
if key == "" || secret == "" || region == "" || bucket == "" {
|
||||
glog.Error("请配置 OSS 配置")
|
||||
}
|
||||
config := &aws.Config{
|
||||
Region: aws.String(region),
|
||||
Credentials: credentials.NewStaticCredentials(key, secret, ""),
|
||||
}
|
||||
sess := session.Must(session.NewSession(config))
|
||||
amazonS3Client := AmazonS3Client{
|
||||
bucket: bucket,
|
||||
key: key,
|
||||
region: region,
|
||||
secret: secret,
|
||||
sess: sess,
|
||||
}
|
||||
oss.RegisterClient("amazon_s3", &amazonS3Client)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user