package controllers import ( "errors" "strconv" "time" "wechat-conf/utils" "net/http" "net/url" ) // FileUpload 文件上传 func (c *BaseController) FileUpload() { file, err := c.uploadFileToOSS("file") if err != nil { c.ResponseError(err, http.StatusInternalServerError) } c.ResponseJSON(map[string]interface{}{ "url": file, }) } func (c *BaseController) uploadFileToOSS(field string) (string, error) { aliConf, ok := c.Configer[AliYunConf] if !ok { return "", errors.New("没有找到阿里云相关配置") } endpoint := aliConf.String("oss::Endpoint") accessKeyID := aliConf.String("oss::AccessKeyId") accessKeySecret := aliConf.String("oss::AccessKeySecret") bucket := aliConf.String("oss::Bucket") aliCli, err := utils.GetOssClient(endpoint, accessKeyID, accessKeySecret) if err != nil { return "", err } fNameExtra := strconv.FormatInt(time.Now().Unix(), 10) fileURL, err := utils.UploadFileToBucket(aliCli, c.Ctx.Request, bucket, field, fNameExtra) if err != nil { return "", err } return fileURL, nil } // UploadBase64Image Upload base64-image to ali-oss // @Title Upload image to ali-oss // @Description 上传base64图片到阿里云 // @Param UpImgStr form string true "图片控件name" // @Success 200 { Url } 图片URL // @Failure >300 error message func (c *BaseController) UploadBase64Image() { base64Str, err := url.QueryUnescape(c.GetString("base64str")) if err != nil { c.ResponseError(utils.LogError("上传 Base64 图片失败", err)) } imgURL, err := c.uploadStringToAliOSS(base64Str) if err != nil { c.ResponseError(err) } resp := map[string]interface{}{ "url": imgURL, } c.ResponseJSON(resp) } // uploadStringToAliOSS 上传文件到阿里云 func (c *BaseController) uploadStringToAliOSS(fStr string) (string, error) { aliConf, ok := c.Configer[AliYunConf] if !ok { return "", errors.New("没有找到阿里云相关配置") } endpoint := aliConf.String("oss::Endpoint") accessKeyID := aliConf.String("oss::AccessKeyId") accessKeySecret := aliConf.String("oss::AccessKeySecret") bucket := aliConf.String("oss::Bucket") aliCli, err := utils.GetOssClient(endpoint, accessKeyID, accessKeySecret) if err != nil { return "", utils.LogError("配置阿里云客户端失败", err) } fileURL, err := utils.UploadStringToBucket(aliCli, bucket, fStr) if err != nil { return "", utils.LogError("上传文件到阿里云失败", err) } return fileURL, nil }