package FileUpLoadController import ( "dsCommonTools/Utils/CommonUtil" "dsCommonTools/Utils/ConfigUtil" "fmt" "github.com/gin-gonic/gin" "github.com/minio/minio-go/v6" "net/http" "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 := strings.Split(filename, ".")[1] 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[k] = v } policyMap["url"] = fmt.Sprintf("%s", url) policyMap["success"] = true c.JSON(http.StatusOK, policyMap) }