|
|
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())
|
|
|
}
|