From 279a56db60d31824272bb1fe066da2cfc58e1f52 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=BB=84=E6=B5=B7?= <10402852@qq.com>
Date: Mon, 16 Aug 2021 10:24:13 +0800
Subject: [PATCH] commit
---
dsSzxy/.idea/workspace.xml | 16 ++
.../FileReleateController.go | 137 ++++++++++++++++++
.../FileRelateDao/FileReleateDao.go | 61 ++++++++
.../ImRelateController/ImRelateController.go | 128 +---------------
dsSzxy/Router/Router.go | 5 +-
5 files changed, 218 insertions(+), 129 deletions(-)
diff --git a/dsSzxy/.idea/workspace.xml b/dsSzxy/.idea/workspace.xml
index ae9f8f91..4249a746 100644
--- a/dsSzxy/.idea/workspace.xml
+++ b/dsSzxy/.idea/workspace.xml
@@ -5,7 +5,11 @@
+
+
+
+
@@ -23,6 +27,14 @@
+
+
+
+
+
+
+
+
@@ -46,6 +58,10 @@
+
+
+
+
diff --git a/dsSzxy/Business/FileRelate/FileRelateController/FileReleateController.go b/dsSzxy/Business/FileRelate/FileRelateController/FileReleateController.go
index fd1938bf..7909d4ee 100644
--- a/dsSzxy/Business/FileRelate/FileRelateController/FileReleateController.go
+++ b/dsSzxy/Business/FileRelate/FileRelateController/FileReleateController.go
@@ -1 +1,138 @@
package FileRelateController
+
+import (
+ "bytes"
+ "dsSzxy/Business/FileRelate/FileRelateDao"
+ "dsSzxy/Utils/CommonUtil"
+ "dsSzxy/Utils/ConfigUtil"
+ "dsSzxy/Utils/MinioUtil"
+ "encoding/base64"
+ "fmt"
+ "github.com/disintegration/imaging"
+ "github.com/gin-gonic/gin"
+ "github.com/minio/minio-go/v6"
+ "io/ioutil"
+ "log"
+ "net/http"
+ "os"
+ "strings"
+)
+
+// Routers 模块的路由配置
+func Routers(r *gin.RouterGroup) {
+ rr := r.Group("/fileRelate")
+ //文件表
+ rr.POST("/fileUpload", fileUpload)
+ //rr.POST("/fileRecord", fileRecord)
+ //rr.POST("/fileUpdate", fileUpdate)
+ //rr.POST("/fileCopy", fileCopy)
+ //树型结构
+
+}
+
+//文件上传
+func fileUpload(c *gin.Context) {
+ file, err := c.FormFile("file")
+ if err != nil {
+ c.String(http.StatusBadRequest, fmt.Sprintf("get form err: %s", err.Error()))
+ return
+ }
+ //扩展名
+ ext := CommonUtil.Ext(file.Filename)
+ ext = strings.ToLower(ext)
+ //真实文件名
+ uuid := CommonUtil.GetUUID()
+ //子目录
+ p := ConfigUtil.SavePath + uuid[0:2]
+ exist := CommonUtil.Exists(p)
+ if !exist {
+ os.Mkdir(p, os.ModePerm)
+ }
+
+ trueName := uuid + ext
+ filename := p + "/" + trueName
+ if err := c.SaveUploadedFile(file, filename); err != nil {
+ c.String(http.StatusBadRequest, fmt.Sprintf("upload file err: %s", err.Error()))
+ return
+ }
+
+ //文件大小
+ content, err := ioutil.ReadFile(filename)
+ if err == nil {
+ fmt.Println("file size is ", len(content))
+ }
+ size := len(content)
+
+ // 初使化 minio client对象。
+ minioClient, err := MinioUtil.GetMinioClient()
+ if err != nil {
+ c.JSON(http.StatusOK, gin.H{"success": false, "info": "minio无法连接!"})
+ return
+ }
+
+ // 使用FPutObject上传一个zip文件。
+ contentType := "application/octet-stream"
+ _, err = minioClient.FPutObject(ConfigUtil.MinioBucket, trueName[0:2]+"/"+trueName, filename, minio.PutObjectOptions{ContentType: contentType})
+ if err != nil {
+ log.Fatalln(err)
+ }
+
+ //记录数据库
+ identityId := CommonUtil.ConvertStringToInt32(c.PostForm("identity_id"))
+ personId := CommonUtil.ConvertStringToInt32(c.PostForm("person_id"))
+ targetGroupId := CommonUtil.ConvertStringToInt32(c.PostForm("target_group_id"))
+ targetIdentityId := CommonUtil.ConvertStringToInt32(c.PostForm("target_identity_id"))
+ targetPersonId := CommonUtil.ConvertStringToInt32(c.PostForm("target_person_id"))
+ systemId := CommonUtil.ConvertStringToInt32(c.PostForm("system_id"))
+ FileRelateDao.FileRecord(filename, identityId, personId, targetGroupId, targetIdentityId, targetPersonId, systemId, int32(size), ext)
+ //返回
+ s := FileRelateDao.GetFileDownLoadUrl(trueName[0:2]+"/"+trueName, file.Filename)
+ originUrl := ConfigUtil.MinioDownloadPrefix + ConfigUtil.MinioBucket + "/" + trueName[0:2] + "/" + trueName
+
+ //判断扩展名是不是图片
+ if ext == ".jpg" || ext == ".jpeg" || ext == ".png" || ext == ".bmp" {
+ //读取本地文件
+ imgData, _ := ioutil.ReadFile(filename)
+ buf := bytes.NewBuffer(imgData)
+ image, err := imaging.Decode(buf)
+ if err != nil {
+ fmt.Println(err)
+ return
+ }
+ //生成缩略图
+ image = imaging.Resize(image, 0, 150, imaging.Lanczos)
+ thumbFileName := uuid + "_thumb" + ext
+ thumbTrueName := p + "/" + thumbFileName
+ err = imaging.Save(image, thumbTrueName)
+ if err != nil {
+ fmt.Println(err)
+ }
+
+ //读入生成图片的base64编码
+ ff, _ := os.Open(thumbTrueName)
+ defer ff.Close()
+ sourceBuffer := make([]byte, 500000)
+ n, _ := ff.Read(sourceBuffer)
+ //base64压缩
+ sourceString := base64.StdEncoding.EncodeToString(sourceBuffer[:n])
+ //删除原始文件
+ os.Remove(filename)
+ //删除缩略图文件
+ os.Remove(thumbTrueName)
+ c.JSON(200, gin.H{
+ "success": true,
+ "originUrl": originUrl,
+ "url": s,
+ "thumbContent": sourceString,
+ "size": size,
+ })
+ } else {
+ //删除原始文件
+ os.Remove(filename)
+ c.JSON(200, gin.H{
+ "success": true,
+ "url": s,
+ "size": size,
+ })
+ }
+}
diff --git a/dsSzxy/Business/FileRelate/FileRelateDao/FileReleateDao.go b/dsSzxy/Business/FileRelate/FileRelateDao/FileReleateDao.go
index 02a7b671..3347bb3f 100644
--- a/dsSzxy/Business/FileRelate/FileRelateDao/FileReleateDao.go
+++ b/dsSzxy/Business/FileRelate/FileRelateDao/FileReleateDao.go
@@ -1 +1,62 @@
package FileRelateDao
+
+import (
+ "dsSzxy/Utils/CommonUtil"
+ "dsSzxy/Utils/ConfigUtil"
+ "dsSzxy/Utils/DbUtil"
+ "dsSzxy/models"
+ "errors"
+ "net/url"
+ "time"
+)
+
+var db = DbUtil.Engine
+
+/**
+功能:生成下载地址带中文名
+*/
+func GetFileDownLoadUrl(key string, originName string) string {
+ infix := "?response-content-disposition=attachment%3BfileName%2A%3DUTF-8%27%27"
+ downloadUrl := ConfigUtil.MinioDownloadPrefix + ConfigUtil.MinioBucket + "/" + key + infix + url.QueryEscape(url.QueryEscape(originName))
+ return downloadUrl
+}
+
+//文件记录
+func FileRecord(fileName string, indentityId int32, personId int32, targetGroupId int32, tIdentityId int32, tPersonId int32, systemId int32, fileSize int32, extName string) {
+ var model models.TZhxyFile
+ model.FileId = CommonUtil.GetUUID()
+ model.FileName = fileName
+ model.FileSize = fileSize
+ model.BaseId = "-1"
+ model.BUse = 1
+ model.ExtName = extName
+ model.SystemId = systemId
+ model.TargetGroupId = targetGroupId
+ model.TargetIdentityId = tIdentityId
+ model.TargetPersonId = tPersonId
+ model.UploadIndentityId = indentityId
+ model.UploadPersonId = personId
+ model.UploadTime = time.Now()
+ c, err := GetFileTypeByExtName(extName)
+ if err == nil {
+ model.TypeId = c
+ } else {
+ model.TypeId = 0
+ }
+ db.Insert(model)
+}
+
+/**
+功能:获取文件扩展名对应的类型ID
+*/
+func GetFileTypeByExtName(extName string) (int32, error) {
+ sql := "select type_id from t_zhxy_file_type_ext where ext_name=?"
+ res, err := DbUtil.Engine.SQL(sql, extName).Query().List()
+ if err != nil {
+ return -1, errors.New("查询SQL语句失败!")
+ }
+ if len(res) == 0 {
+ return 0, nil
+ }
+ return res[0]["type_id"].(int32), nil
+}
diff --git a/dsSzxy/Business/ImRelate/ImRelateController/ImRelateController.go b/dsSzxy/Business/ImRelate/ImRelateController/ImRelateController.go
index eb272d50..a1116362 100644
--- a/dsSzxy/Business/ImRelate/ImRelateController/ImRelateController.go
+++ b/dsSzxy/Business/ImRelate/ImRelateController/ImRelateController.go
@@ -1,135 +1,11 @@
package ImRelateController
import (
- "bytes"
- "dsSzxy/Utils/CommonUtil"
- "dsSzxy/Utils/ConfigUtil"
- "dsSzxy/Utils/MinioUtil"
- "encoding/base64"
- "fmt"
- "github.com/disintegration/imaging"
"github.com/gin-gonic/gin"
- "github.com/minio/minio-go/v6"
- "io/ioutil"
- "log"
- "net/http"
- "net/url"
- "os"
- "strings"
)
//模块的路由配置
func Routers(r *gin.RouterGroup) {
- rr := r.Group("/imRelate")
- rr.POST("/fileUpload", fileUpload)
-}
-
-
-
-//聊天中的文件上传
-func fileUpload(c *gin.Context) {
- file, err := c.FormFile("file")
- if err != nil {
- c.String(http.StatusBadRequest, fmt.Sprintf("get form err: %s", err.Error()))
- return
- }
- //扩展名
- ext := CommonUtil.Ext(file.Filename)
- ext = strings.ToLower(ext)
- //真实文件名
- uuid := CommonUtil.GetUUID()
- //子目录
- p := ConfigUtil.SavePath + uuid[0:2]
- exist := CommonUtil.Exists(p)
- if !exist {
- os.Mkdir(p, os.ModePerm)
- }
-
- trueName := uuid + ext
- filename := p + "/" + trueName
- if err := c.SaveUploadedFile(file, filename); err != nil {
- c.String(http.StatusBadRequest, fmt.Sprintf("upload file err: %s", err.Error()))
- return
- }
-
- //文件大小
- content, err := ioutil.ReadFile(filename)
- if err == nil {
- fmt.Println("file size is ", len(content))
- }
- size := len(content)
-
- // 初使化 minio client对象。
- minioClient, err := MinioUtil.GetMinioClient()
- if err != nil {
- c.JSON(http.StatusOK, gin.H{"success": false, "info": "minio无法连接!"})
- return
- }
-
- // 使用FPutObject上传一个zip文件。
- contentType := "application/octet-stream"
- _, err = minioClient.FPutObject(ConfigUtil.MinioBucket, trueName[0:2]+"/"+trueName, filename, minio.PutObjectOptions{ContentType: contentType})
- if err != nil {
- log.Fatalln(err)
- }
-
- //返回
- s := getFileDownLoadUrl(trueName[0:2]+"/"+trueName, file.Filename)
- originUrl := ConfigUtil.MinioDownloadPrefix + ConfigUtil.MinioBucket + "/" + trueName[0:2] + "/" + trueName
-
- //判断扩展名是不是图片
- if ext == ".jpg" || ext == ".jpeg" || ext == ".png" || ext == ".bmp" {
- //读取本地文件
- imgData, _ := ioutil.ReadFile(filename)
- buf := bytes.NewBuffer(imgData)
- image, err := imaging.Decode(buf)
- if err != nil {
- fmt.Println(err)
- return
- }
- //生成缩略图
- image = imaging.Resize(image, 0, 150, imaging.Lanczos)
- thumbFileName := uuid + "_thumb" + ext
- thumbTrueName := p + "/" + thumbFileName
- err = imaging.Save(image, thumbTrueName)
- if err != nil {
- fmt.Println(err)
- }
-
- //读入生成图片的base64编码
- ff, _ := os.Open(thumbTrueName)
- defer ff.Close()
- sourceBuffer := make([]byte, 500000)
- n, _ := ff.Read(sourceBuffer)
- //base64压缩
- sourceString := base64.StdEncoding.EncodeToString(sourceBuffer[:n])
- //删除原始文件
- os.Remove(filename)
- //删除缩略图文件
- os.Remove(thumbTrueName)
- c.JSON(200, gin.H{
- "success": true,
- "originUrl": originUrl,
- "url": s,
- "thumbContent": sourceString,
- "size": size,
- })
- } else {
- //删除原始文件
- os.Remove(filename)
- c.JSON(200, gin.H{
- "success": true,
- "url": s,
- "size": size,
- })
- }
-}
-
-/**
-功能:生成下载地址带中文名
-*/
-func getFileDownLoadUrl(key string, originName string) string {
- infix := "?response-content-disposition=attachment%3BfileName%2A%3DUTF-8%27%27"
- downloadUrl := ConfigUtil.MinioDownloadPrefix + ConfigUtil.MinioBucket + "/" + key + infix + url.QueryEscape(url.QueryEscape(originName))
- return downloadUrl
+ //rr := r.Group("/imRelate")
+ //rr.POST("/fileUpload", fileUpload)
}
diff --git a/dsSzxy/Router/Router.go b/dsSzxy/Router/Router.go
index 0b909495..f2f48ae2 100644
--- a/dsSzxy/Router/Router.go
+++ b/dsSzxy/Router/Router.go
@@ -2,6 +2,7 @@ package Router
import (
"dsSzxy/Business/CaptchaRelate/CaptchaController"
+ "dsSzxy/Business/FileRelate/FileRelateController"
"dsSzxy/Business/ImRelate/ImRelateController"
"dsSzxy/Business/MinIORelate/MinIORelateController"
"github.com/gin-gonic/gin"
@@ -17,8 +18,6 @@ func GinRouter(r *gin.Engine) {
ImRelateController.Routers(rr)
//Captcha
CaptchaController.Routers(rr)
-
//文件
-
-
+ FileRelateController.Routers(rr)
}