hsun 1 year ago
parent
commit
5f3f8f94fe
5 changed files with 152 additions and 15 deletions
  1. 30 15
      controllers/banner.go
  2. 1 0
      go.mod
  3. 1 0
      go.sum
  4. 67 0
      services/aws_s3.go
  5. 53 0
      services/minio.go

+ 30 - 15
controllers/banner.go

@@ -51,23 +51,38 @@ func (this *BannerController) Upload() {
 		return
 	}
 	resourceUrl := ``
-	//上传到阿里云 和 minio
-	if utils.ObjectStorageClient == "minio" {
-		resourceUrl, err = services.UploadImgToMinIo(fileName, fpath)
-		if err != nil {
-			br.Msg = "文件上传失败"
-			br.ErrMsg = "文件上传失败,Err:" + err.Error()
-			return
-		}
-	} else {
-		resourceUrl, err = services.UploadAliyunV2(fileName, fpath)
-		if err != nil {
-			br.Msg = "文件上传失败"
-			br.ErrMsg = "文件上传失败,Err:" + err.Error()
-			return
-		}
+
+	//resourceUrl, err = services.UploadImgToMinIoTest(fileName, fpath)
+	//if err != nil {
+	//	br.Msg = "文件上传失败"
+	//	br.ErrMsg = "文件上传失败,Err:" + err.Error()
+	//	return
+	//}
+
+	resourceUrl, err = services.Upload2S3(fileName, fpath)
+	if err != nil {
+		br.Msg = "文件上传失败"
+		br.ErrMsg = "文件上传失败,Err:" + err.Error()
+		return
 	}
 
+	////上传到阿里云 和 minio
+	//if utils.ObjectStorageClient == "minio" {
+	//	resourceUrl, err = services.UploadImgToMinIo(fileName, fpath)
+	//	if err != nil {
+	//		br.Msg = "文件上传失败"
+	//		br.ErrMsg = "文件上传失败,Err:" + err.Error()
+	//		return
+	//	}
+	//} else {
+	//	resourceUrl, err = services.UploadAliyunV2(fileName, fpath)
+	//	if err != nil {
+	//		br.Msg = "文件上传失败"
+	//		br.ErrMsg = "文件上传失败,Err:" + err.Error()
+	//		return
+	//	}
+	//}
+
 	defer func() {
 		os.Remove(fpath)
 	}()

+ 1 - 0
go.mod

@@ -13,6 +13,7 @@ require (
 	github.com/aliyun/alibaba-cloud-sdk-go v1.61.1656
 	github.com/aliyun/aliyun-oss-go-sdk v2.2.0+incompatible
 	github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de
+	github.com/aws/aws-sdk-go v1.42.23
 	github.com/beego/bee/v2 v2.0.4
 	github.com/beego/beego/v2 v2.0.7
 	github.com/beevik/etree v1.2.0

+ 1 - 0
go.sum

@@ -73,6 +73,7 @@ github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb
 github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de h1:FxWPpzIjnTlhPwqqXc4/vE0f7GvRjuAsbW+HOIe8KnA=
 github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de/go.mod h1:DCaWoUhZrYW9p1lxo/cm8EmUOOzAPSEZNGF2DK1dJgw=
 github.com/astaxie/beego v1.12.3/go.mod h1:p3qIm0Ryx7zeBHLljmd7omloyca1s4yu1a8kM1FkpIA=
+github.com/aws/aws-sdk-go v1.42.23 h1:V0V5hqMEyVelgpu1e4gMPVCJ+KhmscdNxP/NWP1iCOA=
 github.com/aws/aws-sdk-go v1.42.23/go.mod h1:gyRszuZ/icHmHAVE4gc/r+cfCmhA1AD+vqfWbgI+eHs=
 github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f h1:ZNv7On9kyUzm7fvRZumSyy/IUiSC7AzL0I1jKKtwooA=
 github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f/go.mod h1:AuiFmCCPBSrqvVMvuqFuk0qogytodnVFVSN5CeJB8Gc=

+ 67 - 0
services/aws_s3.go

@@ -0,0 +1,67 @@
+package services
+
+import (
+	"bytes"
+	"eta/eta_api/utils"
+	"fmt"
+	"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"
+	"io/ioutil"
+)
+
+func Upload2S3(fileName, filePath string) (resourceUrl string, err error) {
+	defer func() {
+		if err != nil {
+			fmt.Println(err.Error())
+		}
+	}()
+
+	// 替换为你的阿里云OSS Endpoint、access_key和access_key_secret
+	endpoint := utils.Endpoint
+	accessKey := utils.AccessKeyId
+	secretKey := utils.AccessKeySecret
+
+	// 创建AWS会话
+	sess, e := session.NewSession(&aws.Config{
+		Region:      aws.String("oss-cn-shanghai"), // 替换为MinIO的region
+		Credentials: credentials.NewStaticCredentials(accessKey, secretKey, ""),
+		Endpoint:    aws.String(endpoint),
+		S3ForcePathStyle: aws.Bool(false),
+	})
+	if e != nil {
+		err = fmt.Errorf("new session err: %s", e.Error())
+		return
+	}
+
+	// 创建S3服务客户端
+	client := s3.New(sess)
+
+	// 替换为你的S3桶名和文件路径
+	bucketName := utils.Bucketname
+	//filePath := "/path/to/your/file.txt"
+
+	// 读取文件内容
+	fileContent, e := ioutil.ReadFile(filePath)
+	if e != nil {
+		err = fmt.Errorf("read file err: %s", e.Error())
+		return
+	}
+
+	path := utils.UploadDir + "test/"
+	path += fileName
+	// 将文件内容上传到MinIO
+	_, e = client.PutObject(&s3.PutObjectInput{
+		Bucket: aws.String(bucketName),
+		Key:    aws.String(path),
+		Body:   bytes.NewReader(fileContent),
+	})
+	if e != nil {
+		err = fmt.Errorf("put object err: %s", e.Error())
+		return
+	}
+	resourceUrl = utils.Imghost + path
+	fmt.Println(resourceUrl)
+	return
+}

+ 53 - 0
services/minio.go

@@ -4,6 +4,7 @@ import (
 	"context"
 	"errors"
 	"eta/eta_api/utils"
+	"fmt"
 	"github.com/minio/minio-go/v7"
 	"github.com/minio/minio-go/v7/pkg/credentials"
 	"log"
@@ -347,3 +348,55 @@ func UploadMinIoToDir(filename, filePath, uploadDir, fileDir string) (string, er
 	path = utils.MinIoImghost + path
 	return path, err
 }
+
+func UploadImgToMinIoTest(fileName, filePath string) (string, error) {
+	ctx := context.Background()
+	endpoint := utils.Endpoint
+	accessKeyID := utils.AccessKeyId
+	secretAccessKey := utils.AccessKeySecret
+	useSSL := false
+	if utils.MinIoUseSSL == "true" {
+		useSSL = true
+	}
+	minioClient, err := minio.New(endpoint, &minio.Options{
+		Creds:  credentials.NewStaticV4(accessKeyID, secretAccessKey, ""),
+		Secure: useSSL,
+	})
+	if err != nil {
+		log.Fatalln(err)
+		return "1", err
+	}
+	bucketName := utils.Bucketname
+	// Check to see if we already own this bucket (which happens if you run this twice)
+
+	buckets, e := minioClient.ListBuckets(ctx)
+	if e != nil {
+		fmt.Println("ListBuckets: ", e.Error())
+		return "", e
+	}
+	for k := range buckets {
+		fmt.Println(k)
+	}
+
+	exists, errBucketExists := minioClient.BucketExists(ctx, bucketName)
+	fmt.Println("exists: ", exists)
+	fmt.Println("errBucketExists: ", errBucketExists)
+	if errBucketExists == nil && exists {
+		log.Printf("We already own %s\n", bucketName)
+	} else {
+		log.Fatalln(err)
+		return "2", err
+	}
+	path := utils.UploadDir + time.Now().Format("200601/20060102/")
+	path += fileName
+	// Upload the zip file with FPutObject
+	//contentType := "application/xlsx"
+	_, err = minioClient.FPutObject(ctx, bucketName, path, filePath, minio.PutObjectOptions{})
+	if err != nil {
+		log.Fatalln(err)
+		return "3", err
+	}
+
+	path = utils.Imghost + path
+	return path, err
+}