package v1 import ( "git.inspur.com/sbg-jszt/cfn/cfn-schedule/internal/controller" "git.inspur.com/sbg-jszt/cfn/cfn-schedule/internal/pkg/errors" "git.inspur.com/sbg-jszt/cfn/cfn-schedule/internal/service" "github.com/gin-gonic/gin" "log" "os" ) func init() { _ = os.Mkdir("/tmp", os.FileMode(0777)) } func GetPresignedUrl(c *gin.Context) { filename := c.Param("filename") if filename == "" { controller.FailCode(c, errors.InvalidParameter, nil, "请检查参数!") return } url, err := service.GetPresignedUrl("cpn", filename, 10000) if err != nil { log.Println(err) controller.FailCode(c, errors.ServerError, err, "minio connection fail!") return } controller.Success(c, url) } func PostPresignedUrl(c *gin.Context) { filename := c.Param("filename") if filename == "" { controller.FailCode(c, errors.InvalidParameter, nil, "请检查参数!") return } formData, err := service.PostPresignedUrl("cpn", filename, 10000) if err != nil { log.Println(err) controller.FailCode(c, errors.ServerError, err, "minio connection fail!") return } controller.Success(c, formData) } func PutPresignedUrl(c *gin.Context) { filename := c.Param("filename") if filename == "" { controller.FailCode(c, errors.InvalidParameter, nil, "请检查参数!") return } data, err := service.PutPresignedUrl("cpn", filename, 10000) if err != nil { log.Println(err) controller.FailCode(c, errors.ServerError, err, "minio connection fail!") return } controller.Success(c, data) } func UploadFile(c *gin.Context) { _, headers, err := c.Request.FormFile("file") if err != nil { log.Printf("Error when try to get file: %v", err) } filename := c.Request.PostForm.Get("filename") if filename == "" { controller.FailCode(c, errors.InvalidParameter, nil, "请检查参数!") return } //headers.Size 获取文件大小 if headers.Size > 1024*1024*200 { controller.FailCode(c, errors.InvalidParameter, err, "文件大小不能超过200M") return } err = c.SaveUploadedFile(headers, "/tmp/"+headers.Filename) if err != nil { log.Printf("Error upload file: %v", err) controller.FailCode(c, errors.ServerError, err, "上传文件失败!") return } err = service.UploadFile("cpn", filename, "/tmp/"+headers.Filename) if err != nil { log.Printf("Error upload minio file: %v", err) controller.FailCode(c, errors.ServerError, err, "上传文件失败!") return } controller.Success(c, "") }