소스 검색

Merge branch 'feature/eta_jb_ppt_upload' of eta_server/eta_api into master

xyxie 1 년 전
부모
커밋
44202c1472
5개의 변경된 파일70개의 추가작업 그리고 49개의 파일을 삭제
  1. 1 1
      controllers/cloud_disk.go
  2. 11 41
      controllers/ppt_v2.go
  3. 8 1
      controllers/sys_role.go
  4. 38 6
      services/aws_s3.go
  5. 12 0
      utils/config.go

+ 1 - 1
controllers/cloud_disk.go

@@ -580,7 +580,7 @@ func (this *CloudDiskController) ResourceUpload() {
 		_ = os.Remove(filePath)
 	}()
 	// 上传到阿里云
-	ossDir := "static/cloud_disk/"
+	ossDir := utils.STATIC_DIR + "cloud_disk/"
 
 	resourceUrl := ``
 	//上传到阿里云 和 minio

+ 11 - 41
controllers/ppt_v2.go

@@ -507,17 +507,19 @@ func (this *PptV2Controller) PptUpload() {
 		br.ErrMsg = "获取PPT详情失败,Err:" + err.Error()
 		return
 	}
-
 	f, h, err := this.GetFile("file")
 	if err != nil {
 		br.Msg = "获取资源信息失败"
 		br.ErrMsg = "获取资源信息失败,Err:" + err.Error()
 		return
 	}
+	defer func() {
+		_ = f.Close()
+	}()
 	uploadFileName := h.Filename //上传的文件名
 	ext := path.Ext(h.Filename)
 	dateDir := time.Now().Format("20060102")
-	uploadDir := utils.STATIC_DIR + "hongze/" + dateDir
+	uploadDir := utils.STATIC_DIR + "ppt/" + dateDir
 	err = os.MkdirAll(uploadDir, utils.DIR_MOD)
 	if err != nil {
 		br.Msg = "存储目录创建失败"
@@ -527,14 +529,16 @@ func (this *PptV2Controller) PptUpload() {
 	randStr := utils.GetRandStringNoSpecialChar(28)
 	fileName := randStr + ext
 	fpath := uploadDir + "/" + fileName
-	defer f.Close() //关闭上传文件
-	err = this.SaveToFile("file", fpath)
-	if err != nil {
+
+	if err = this.SaveToFile("file", fpath); err != nil {
 		br.Msg = "文件上传失败"
 		br.ErrMsg = "文件上传失败,Err:" + err.Error()
 		return
 	}
-	hzUploadDir := "ppt/"
+	defer func() {
+		_ = os.Remove(fpath)
+	}()
+	hzUploadDir := utils.STATIC_DIR + "ppt/"
 	savePptxToOssPath := hzUploadDir + time.Now().Format("200601/20060102/")
 
 	//pptName := strings.Replace(pptItem.Title, "\n", "", -1)
@@ -542,56 +546,22 @@ func (this *PptV2Controller) PptUpload() {
 	pptName := utils.GetRandStringNoSpecialChar(28)
 	savePptxToOssPath += pptName + ".pptx"
 
-	defer func() {
-		_ = os.Remove(fpath)
-	}()
-
 	//上传到阿里云 和 minio
 	pptxUrl := ``
-	//if utils.ObjectStorageClient == "minio" {
-	//	err = services.UploadFileToMinIo("", fpath, savePptxToOssPath)
-	//	if err != nil {
-	//		br.Msg = "文件上传失败"
-	//		br.ErrMsg = "文件上传失败,Err:" + err.Error()
-	//		return
-	//	}
-	//	pptxUrl = utils.MinIoImghost + savePptxToOssPath
-	//} else {
-	//	err = services.UploadFileToAliyun("", fpath, savePptxToOssPath)
-	//	if err != nil {
-	//		br.Msg = "文件上传失败"
-	//		br.ErrMsg = "文件上传失败,Err:" + err.Error()
-	//		return
-	//	}
-	//	pptxUrl = utils.Imghost + savePptxToOssPath
-	//}
 	ossClient := services.NewOssClient()
 	if ossClient == nil {
 		br.Msg = "上传失败"
 		br.ErrMsg = "初始化OSS服务失败"
 		return
 	}
-	pptxUrl, err = ossClient.UploadFile("", fpath, savePptxToOssPath)
+	pptxUrl, err = ossClient.UploadFile(fileName, fpath, savePptxToOssPath)
 	if err != nil {
 		br.Msg = "文件上传失败"
 		br.ErrMsg = "文件上传失败,Err:" + err.Error()
 		return
 	}
 
-	item := &models.Resource{
-		//Id:           0,
-		ResourceUrl:  pptxUrl,
-		CreateTime:   time.Now(),
-		ResourceType: 4,
-	}
-	newId, err := models.AddResource(item)
-	if err != nil {
-		br.Msg = "资源上传失败"
-		br.ErrMsg = "资源上传失败,Err:" + err.Error()
-		return
-	}
 	resp := models.ResourceResp{
-		Id:           newId,
 		ResourceUrl:  pptxUrl,
 		ResourceName: uploadFileName,
 	}

+ 8 - 1
controllers/sys_role.go

@@ -714,7 +714,14 @@ func (this *SysRoleController) SystemConfig() {
 	if osc.ConfVal == "" {
 		osc.ConfVal = "oss"
 	}
-	list = append(list, osc)
+
+	// ppt上传走后端配置
+	pptUpload := system.BusinessConf{
+		ConfKey: "PptUpdateApi",
+		ConfVal: utils.PptUpdateApi,
+	}
+
+	list = append(list, osc, pptUpload)
 
 	// 获取审批流设置
 	//confKey := "approval_flow"

+ 38 - 6
services/aws_s3.go

@@ -2,6 +2,7 @@ package services
 
 import (
 	"bytes"
+	"crypto/tls"
 	"eta/eta_api/utils"
 	"fmt"
 	"github.com/aws/aws-sdk-go/aws"
@@ -9,6 +10,7 @@ import (
 	"github.com/aws/aws-sdk-go/aws/session"
 	"github.com/aws/aws-sdk-go/service/s3"
 	"io/ioutil"
+	"net/http"
 	"time"
 )
 
@@ -60,7 +62,12 @@ func (m *S3Oss) UploadFile(fileName, localFile, savePath string) (resourceUrl st
 		}
 	}()
 
-	endpoint := utils.S3Endpoint
+	// 默认使用后端这个, 这里有两个配置的原因是
+	// 前端上传跨域问题可能会使用反向代理来解决, 这样的话同一个endpoint就会导致一端正常另一端不正常
+	endpoint := utils.S3BackEndpoint
+	if endpoint == "" {
+		endpoint = utils.S3Endpoint
+	}
 	accessKey := utils.S3AccessKeyId
 	secretKey := utils.S3AccessKeySecret
 	region := utils.S3Region
@@ -72,14 +79,31 @@ func (m *S3Oss) UploadFile(fileName, localFile, savePath string) (resourceUrl st
 	if forceStyle == "false" {
 		hostStyle = false
 	}
+	disableSSL := true // 默认true, 跳过SSL
+	if utils.S3DisableSSL == "false" {
+		disableSSL = false
+	}
+	//fmt.Println("disableSSL: ", disableSSL)
 
-	// 创建AWS会话
-	sess, e := session.NewSession(&aws.Config{
+	config := &aws.Config{
 		Region:           aws.String(region),
 		Credentials:      credentials.NewStaticCredentials(accessKey, secretKey, ""),
 		Endpoint:         aws.String(endpoint),
 		S3ForcePathStyle: aws.Bool(hostStyle),
-	})
+		DisableSSL:       aws.Bool(disableSSL),
+	}
+	if disableSSL {
+		config.HTTPClient = &http.Client{
+			Transport: &http.Transport{
+				TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
+			},
+		}
+	}
+	//b, _ := json.Marshal(config)
+	//fmt.Println(string(b))
+
+	// 创建AWS会话
+	sess, e := session.NewSession(config)
 	if e != nil {
 		err = fmt.Errorf("new session err: %s", e.Error())
 		return
@@ -99,16 +123,24 @@ func (m *S3Oss) UploadFile(fileName, localFile, savePath string) (resourceUrl st
 	if savePath == "" {
 		path = uploadDir + time.Now().Format("200601/20060102/") + fileName
 	}
-	_, e = client.PutObject(&s3.PutObjectInput{
+	putObjectInput := &s3.PutObjectInput{
 		Bucket: aws.String(bucketName),
 		Key:    aws.String(path),
 		Body:   bytes.NewReader(fileContent),
-	})
+	}
+	if utils.S3OpenAcl == "1" {
+		putObjectInput.ACL = aws.String(s3.ObjectCannedACLPublicRead)
+	}
+	fmt.Printf("put object input: %+v\n", putObjectInput)
+	_, e = client.PutObject(putObjectInput)
 	if e != nil {
 		err = fmt.Errorf("put object err: %s", e.Error())
 		return
 	}
 	resourceUrl = resourceHost + path
+	if utils.ResourceProxyUrl != "" {
+		resourceUrl = utils.ResourceProxyUrl + path
+	}
 	return
 }
 

+ 12 - 0
utils/config.go

@@ -32,6 +32,7 @@ var (
 	EmailSendToUsers string // 邮件提醒人员
 	JhGnAppKey       string // 聚合短信,国内AppKey
 	JhGjAppKey       string // 聚合短信,国际AppKey
+	ResourceProxyUrl string // 代理资源地址
 )
 
 // ES配置
@@ -121,6 +122,7 @@ var (
 // 对象存储客户端
 var (
 	ObjectStorageClient string // 目前有oss minio,默认oss
+	PptUpdateApi        string //ppt 通过后端接口的方式上传
 )
 
 // 阿里云配置
@@ -216,6 +218,7 @@ var (
 // S3配置
 var (
 	S3Endpoint        string
+	S3BackEndpoint    string
 	S3BucketName      string
 	S3UploadDir       string
 	S3AccessKeyId     string
@@ -225,6 +228,8 @@ var (
 	S3ForceStyle      string
 	S3EndpointPort    string
 	S3Protocol        string
+	S3DisableSSL      string
+	S3OpenAcl         string
 )
 
 func init() {
@@ -306,6 +311,8 @@ func init() {
 	// 静态文件目录
 	STATIC_DIR = config["static_dir"]
 
+	// 代理资源地址
+	ResourceProxyUrl = config["resource_proxy_url"]
 	// 系统内部服务地址
 	{
 		// 公共指标库相关
@@ -396,6 +403,8 @@ func init() {
 	// 对象存储客户端
 	ObjectStorageClient = config["object_storage_client"]
 
+	// ppt上传是否走后端
+	PptUpdateApi = config["ppt_update_api"]
 	// OSS相关
 	{
 		Endpoint = config["endpoint"]
@@ -488,6 +497,7 @@ func init() {
 	// S3-OSS相关
 	{
 		S3Endpoint = config["s3_endpoint"]
+		S3BackEndpoint = config["s3_back_endpoint"]
 		S3BucketName = config["s3_bucket_name"]
 		S3Host = config["s3_host"]
 		S3AccessKeyId = config["s3_access_key_id"]
@@ -497,6 +507,8 @@ func init() {
 		S3ForceStyle = config["s3_force_style"]
 		S3EndpointPort = config["s3_endpoint_port"]
 		S3Protocol = config["s3_protocol"]
+		S3DisableSSL = config["s3_disable_ssl"]
+		S3OpenAcl = config["s3_open_acl"]
 	}
 
 	// 生成长图服务地址