|
|
package FileUpLoadController
|
|
|
|
|
|
import (
|
|
|
"dsCommonTools/Utils/CommonUtil"
|
|
|
"dsCommonTools/Utils/ConfigUtil"
|
|
|
"fmt"
|
|
|
"github.com/gin-gonic/gin"
|
|
|
"github.com/minio/minio-go/v6"
|
|
|
"net/http"
|
|
|
"path"
|
|
|
"strings"
|
|
|
"time"
|
|
|
)
|
|
|
|
|
|
//模块的路由配置
|
|
|
func Routers(r *gin.RouterGroup) {
|
|
|
rr := r.Group("/fileupload")
|
|
|
|
|
|
rr.GET("/getPostPolicyInfo", getPostPolicyInfo)
|
|
|
|
|
|
return
|
|
|
}
|
|
|
|
|
|
func getPostPolicyInfo(c *gin.Context) {
|
|
|
filename := c.Query("filename")
|
|
|
|
|
|
if filename == "" {
|
|
|
c.JSON(http.StatusOK, gin.H{"success": false, "info": "文件名称不允许为空!"})
|
|
|
return
|
|
|
}
|
|
|
|
|
|
extension := path.Ext(filename)
|
|
|
|
|
|
minioClient, err := minio.New(ConfigUtil.EndPoint, ConfigUtil.AccessKeyId, ConfigUtil.SecretAccessKey, false)
|
|
|
if err != nil {
|
|
|
c.JSON(http.StatusOK, gin.H{"success": false, "info": "minio无法连接!"})
|
|
|
return
|
|
|
}
|
|
|
|
|
|
policy := minio.NewPostPolicy()
|
|
|
//Bucket名称
|
|
|
policy.SetBucket(ConfigUtil.Bucket)
|
|
|
policy.SetKey(CommonUtil.GetUUID() + extension)
|
|
|
//1天有效期
|
|
|
policy.SetExpires(time.Now().UTC().AddDate(0, 0, 1))
|
|
|
url, formData, err := minioClient.PresignedPostPolicy(policy)
|
|
|
if err != nil {
|
|
|
c.JSON(http.StatusOK, gin.H{"success": false, "info": "minio生成签名失败!"})
|
|
|
return
|
|
|
}
|
|
|
policyMap := make(map[string]interface{})
|
|
|
for k, v := range formData {
|
|
|
policyMap[strings.Replace(k, "-", "_", -1)] = v
|
|
|
}
|
|
|
policyMap["url"] = fmt.Sprintf("%s", url)
|
|
|
policyMap["success"] = true
|
|
|
|
|
|
c.JSON(http.StatusOK, policyMap)
|
|
|
}
|