From 56568e8e654f65bc7686fc47f9d51f3d7ad4fd58 Mon Sep 17 00:00:00 2001 From: huanghai <10402852@qq.com> Date: Thu, 16 Jul 2020 10:39:00 +0800 Subject: [PATCH] 'commit' --- dsSupport/Business/Minio/MinioController.go | 69 +++++++++++++++++++ .../PreviewController.go | 4 +- dsSupport/Business/S3File/S3FileController.go | 36 ---------- dsSupport/Config/Config.ini | 8 ++- dsSupport/Html/MinioUpload.html | 4 +- dsSupport/Router/BaseRouter.go | 10 +-- dsSupport/Utils/CommonUtil/CommonUtil.go | 11 +++ dsSupport/Utils/ConfigUtil/ConfigUtil.go | 32 ++++++--- dsSupport/go.mod | 1 + dsSupport/go.sum | 2 + 10 files changed, 120 insertions(+), 57 deletions(-) create mode 100644 dsSupport/Business/Minio/MinioController.go rename dsSupport/Business/Preview/{PreviewController => }/PreviewController.go (97%) delete mode 100644 dsSupport/Business/S3File/S3FileController.go diff --git a/dsSupport/Business/Minio/MinioController.go b/dsSupport/Business/Minio/MinioController.go new file mode 100644 index 00000000..7066d3cf --- /dev/null +++ b/dsSupport/Business/Minio/MinioController.go @@ -0,0 +1,69 @@ +package Minio + +import ( + "dsSupport/Utils/CommonUtil" + "dsSupport/Utils/ConfigUtil" + "github.com/gin-gonic/gin" + "github.com/minio/minio-go/v6" + "log" + "net/http" + "net/url" + "strings" + "time" +) + +//模块的路由配置 +func Routers(r *gin.RouterGroup) { + //注册接口路径 + rr := r.Group("/minio") + //上传URL签名 + rr.GET("/presignedUrl", presignedUrl) + //获取下载URL地址 + rr.GET("/getUrl", getUrl) + return +} +//声明s3的客户端实例 +var s3Client *minio.Client +var err error +var bucketName string + +func init() { + bucketName=ConfigUtil.MinioBacketName + s3Client, err = minio.New(ConfigUtil.MinioEndpoint, ConfigUtil.MinioAk, ConfigUtil.MinioSk, false) + if err != nil { + log.Fatalln(err) + } +} + +/** +功能:获取下载URL地址 +作者:黄海 +时间:2020-07-16 +*/ +func getUrl(c *gin.Context) { + name := c.Query("name") + reqParams := make(url.Values) + reqParams.Set("response-content-disposition", "attachment; filename=\""+name+"\"") + presignedURL, err := s3Client.PresignedGetObject(bucketName, name, time.Duration(1000)*time.Second*60, reqParams) + if err != nil { + log.Fatalln(err) + } + log.Println(presignedURL) +} + +/** +功能:生成上传的签名 +作者:黄海 +时间:2020-07-16 +*/ +func presignedUrl(c *gin.Context) { + //换成uuid文件格式 + name := c.Query("name") + ext := strings.Split(name, ".")[1] + name = CommonUtil.GetUUID() + "." + ext + presignedURL, err := s3Client.PresignedPutObject(bucketName, name, time.Duration(1000)*time.Second*300) + if err != nil { + log.Fatalln(err) + } + c.String(http.StatusOK, presignedURL.String()) +} diff --git a/dsSupport/Business/Preview/PreviewController/PreviewController.go b/dsSupport/Business/Preview/PreviewController.go similarity index 97% rename from dsSupport/Business/Preview/PreviewController/PreviewController.go rename to dsSupport/Business/Preview/PreviewController.go index 2781a55b..bb8bb3da 100644 --- a/dsSupport/Business/Preview/PreviewController/PreviewController.go +++ b/dsSupport/Business/Preview/PreviewController.go @@ -1,4 +1,4 @@ -package PreviewController +package Preview import ( "dsSupport/Const" @@ -22,7 +22,7 @@ func Routers(r *gin.RouterGroup) { return } -// http://127.0.0.1:9000/support/preview/previewOffice +// http://127.0.0.1:9000/dsSupport/preview/previewOffice /** 功能:提供Office系列文件的预览功能 作者:黄海 diff --git a/dsSupport/Business/S3File/S3FileController.go b/dsSupport/Business/S3File/S3FileController.go deleted file mode 100644 index 75591d46..00000000 --- a/dsSupport/Business/S3File/S3FileController.go +++ /dev/null @@ -1,36 +0,0 @@ -package S3File - -import ( - "github.com/gin-gonic/gin" - "github.com/minio/minio-go/v6" - "log" - "time" -) -//模块的路由配置 -func Routers(r *gin.RouterGroup) { - rr := r.Group("/Minio") - //配置接口 - rr.GET("/presignedUrl", presignedUrl) - return -} - -func presignedUrl(c *gin.Context) { - //http://10.10.14.242:9000/dsmin/IMG_20200512_114233.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=5D2Q3FZ04LW4DIDW7R22%2F20200716%2F%2Fs3%2Faws4_request&X-Amz-Date=20200716T014856Z&X-Amz-Expires=432000&X-Amz-SignedHeaders=host&X-Amz-Signature=29371b8f457270b8cd4bc550d5643e5b2a72a071d802a7d091168b043f644bea - s3Client, err := minio.New("10.10.14.242:9000", "5D2Q3FZ04LW4DIDW7R22", "C98uUVskiHjPaVmjTBPFdE6rh+wOJKtQIn1wvqvv", false) - if err != nil { - log.Fatalln(err) - } - uploadPresign,err:=s3Client.PresignedPutObject("dsmin","1.docx",time.Duration(1000)*time.Second*300) - if err != nil { - log.Fatalln(err) - } - log.Println(uploadPresign) - - //reqParams := make(url.Values) - //reqParams.Set("response-content-disposition", "attachment; filename=\"IMG_20200512_114233.jpg\"") - //presignedURL, err := s3Client.PresignedGetObject("dsmin", "IMG_20200512_114233.jpg", time.Duration(1000)*time.Second, reqParams) - //if err != nil { - // log.Fatalln(err) - //} - //log.Println(presignedURL) -} diff --git a/dsSupport/Config/Config.ini b/dsSupport/Config/Config.ini index 4c7b8a28..b8245988 100644 --- a/dsSupport/Config/Config.ini +++ b/dsSupport/Config/Config.ini @@ -4,4 +4,10 @@ ak = WAFBGJACKDOQZDH1MKZ1 sk = dlWTUbqgCICaYJG3n0Rot4jXaen2HnfFtMVxiPEo endpoint = obs.cn-north-1.myhuaweicloud.com backupPrefix = baseServiceDbBackup -remainDays = 15 \ No newline at end of file +remainDays = 15 + +[minio] +endpoint = 10.10.14.242:9000 +ak = 5D2Q3FZ04LW4DIDW7R22 +sk = C98uUVskiHjPaVmjTBPFdE6rh+wOJKtQIn1wvqvv +bucketName = dsmin \ No newline at end of file diff --git a/dsSupport/Html/MinioUpload.html b/dsSupport/Html/MinioUpload.html index 9347586a..8125c1d8 100644 --- a/dsSupport/Html/MinioUpload.html +++ b/dsSupport/Html/MinioUpload.html @@ -23,13 +23,13 @@ }); } } - // 发请求到Node.js server获取上传URL。 // `retrieveNewURL` accepts the name of the current file and invokes the `/presignedUrl` endpoint to // generate a pre-signed URL for use in uploading that file: function retrieveNewURL(file, cb) { - fetch(`/presignedUrl?name=${file.name}`).then((response) => { + fetch(`/dsSupport/minio/presignedUrl?name=${file.name}`).then((response) => { response.text().then((url) => { + console.log(url); cb(file, url); }); }).catch((e) => { diff --git a/dsSupport/Router/BaseRouter.go b/dsSupport/Router/BaseRouter.go index 8e1edb0c..407c1076 100644 --- a/dsSupport/Router/BaseRouter.go +++ b/dsSupport/Router/BaseRouter.go @@ -1,17 +1,17 @@ package Router import ( - "dsSupport/Business/Preview/PreviewController" - "dsSupport/Business/S3File" + "dsSupport/Business/Preview" + "dsSupport/Business/Minio" "github.com/gin-gonic/gin" ) //接口路由 func GinRouter(r *gin.Engine) { //注册分路线 - rr := r.Group("/support") + rr := r.Group("/dsSupport") //preview - PreviewController.Routers(rr) + Preview.Routers(rr) //minio - S3File.Routers(rr) + Minio.Routers(rr) } diff --git a/dsSupport/Utils/CommonUtil/CommonUtil.go b/dsSupport/Utils/CommonUtil/CommonUtil.go index 9df2eae3..9fb18b98 100644 --- a/dsSupport/Utils/CommonUtil/CommonUtil.go +++ b/dsSupport/Utils/CommonUtil/CommonUtil.go @@ -4,6 +4,7 @@ import ( "bufio" "bytes" "errors" + uuid "github.com/satori/go.uuid" "log" "os" "os/exec" @@ -115,3 +116,13 @@ func IsContainInt32(items []int32, item int32) bool { } return false } + +/** +功能:获取UUID +作者:黄海 +时间:2020-02-03 +*/ +func GetUUID() string { + u2 := strings.ToUpper(uuid.NewV4().String()) + return u2 +} diff --git a/dsSupport/Utils/ConfigUtil/ConfigUtil.go b/dsSupport/Utils/ConfigUtil/ConfigUtil.go index f4d95029..886fc6fa 100644 --- a/dsSupport/Utils/ConfigUtil/ConfigUtil.go +++ b/dsSupport/Utils/ConfigUtil/ConfigUtil.go @@ -7,12 +7,17 @@ import ( var ( //Obs - Bucket string - Ak string - Sk string - Endpoint string + Bucket string + Ak string + Sk string + Endpoint string BackupPrefix string - RemainDays int32 + RemainDays int32 + + MinioEndpoint string + MinioAk string + MinioSk string + MinioBacketName string ) func init() { @@ -24,12 +29,17 @@ func init() { return } //obs配置 - Ak= iniParser.GetString("obs", "ak") - Sk= iniParser.GetString("obs", "sk") - Bucket= iniParser.GetString("obs", "bucket") - Endpoint= iniParser.GetString("obs", "endpoint") - BackupPrefix= iniParser.GetString("obs", "backupPrefix") - RemainDays=iniParser.GetInt32("obs", "remainDays") + Ak = iniParser.GetString("obs", "ak") + Sk = iniParser.GetString("obs", "sk") + Bucket = iniParser.GetString("obs", "bucket") + Endpoint = iniParser.GetString("obs", "endpoint") + BackupPrefix = iniParser.GetString("obs", "backupPrefix") + RemainDays = iniParser.GetInt32("obs", "remainDays") + //Minio + MinioEndpoint = iniParser.GetString("minio", "endpoint") + MinioAk = iniParser.GetString("minio", "ak") + MinioSk = iniParser.GetString("minio", "sk") + MinioBacketName=iniParser.GetString("minio", "bucketName") } type IniParser struct { diff --git a/dsSupport/go.mod b/dsSupport/go.mod index 64182156..599b6043 100644 --- a/dsSupport/go.mod +++ b/dsSupport/go.mod @@ -11,6 +11,7 @@ require ( github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.1 // indirect github.com/robfig/cron/v3 v3.0.0 + github.com/satori/go.uuid v1.2.0 golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae // indirect google.golang.org/protobuf v1.25.0 // indirect gopkg.in/ini.v1 v1.57.0 diff --git a/dsSupport/go.sum b/dsSupport/go.sum index 1c7fd8b2..adb6bc4e 100644 --- a/dsSupport/go.sum +++ b/dsSupport/go.sum @@ -75,6 +75,8 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/robfig/cron/v3 v3.0.0 h1:kQ6Cb7aHOHTSzNVNEhmp8EcWKLb4CbiMW9h9VyIhO4E= github.com/robfig/cron/v3 v3.0.0/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= +github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww= +github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/sirupsen/logrus v1.5.0/go.mod h1:+F7Ogzej0PZc/94MaYx/nvG9jOFMD2osvC3s+Squfpo= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=