package qiniu import ( "code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git/e" "code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git/md" zhios_third_party_utils "code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git/utils" "fmt" "strings" ) func ImgReqUpload(arg map[string]string, uid, dirName, fname, callbackUrl string, fsize int64) (interface{}, error) { ext := zhios_third_party_utils.FileExt(fname) if err := initStg(arg, fsize, ext); err != nil { return nil, err } newName := dirName + "_" + fmt.Sprintf("%010s", uid) // 默认都加时间戳 newName += "_" + zhios_third_party_utils.FormatNanoUnix() + zhios_third_party_utils.RandString(4, "0123456789") newName += "." + ext f := &md.FileCallback{ Uid: uid, DirId: md.FileUserDir[dirName], FileName: newName, } return ReqImgUpload(f, callbackUrl), nil } func initStg(stgInfo map[string]string, fsize int64, ext string) error { // todo 目前仅支持七牛 if v, ok := stgInfo[md.KEY_CFG_FILE_REGION]; !ok || v == "" { return e.NewErrCode(e.ERR_CFG) } if v, ok := stgInfo[md.KEY_CFG_FILE_AK]; !ok || v == "" { return e.NewErrCode(e.ERR_CFG) } if v, ok := stgInfo[md.KEY_CFG_FILE_SK]; !ok || v == "" { return e.NewErrCode(e.ERR_CFG) } if v, ok := stgInfo[md.KEY_CFG_FILE_BUCKET]; !ok || v == "" { return e.NewErrCode(e.ERR_CFG) } if v, ok := stgInfo[md.KEY_CFG_FILE_SCHEME]; !ok || v == "" { stgInfo[md.KEY_CFG_FILE_SCHEME] = "http" } Init(stgInfo[md.KEY_CFG_FILE_AK], stgInfo[md.KEY_CFG_FILE_SK], stgInfo[md.KEY_CFG_FILE_BUCKET], stgInfo[md.KEY_CFG_FILE_REGION], stgInfo[md.KEY_CFG_FILE_SCHEME]) if v, ok := stgInfo[md.KEY_CFG_FILE_HOST]; !ok || v == "" { var err error stgInfo[md.KEY_CFG_FILE_HOST], err = BucketGetDomain(stgInfo[md.KEY_CFG_FILE_BUCKET]) if err != nil { return e.NewErrCode(e.ERR_CFG) } } // 头像缩略图参数 if v, ok := stgInfo[md.KEY_CFG_FILE_AVATAR_THUMBNAIL]; !ok || v == "" { stgInfo[md.KEY_CFG_FILE_AVATAR_THUMBNAIL] = "?imageView2/1/w/200/h/200/format/png" } // 检查文件大小限制 if v, ok := stgInfo[md.KEY_CFG_FILE_MAX_SIZE]; ok && v != "" && zhios_third_party_utils.StrToInt64(v) < fsize { return e.NewErrCode(e.ERR_FILE_MAX_SIZE) } // 检查文件后缀 if v, ok := stgInfo[md.KEY_CFG_FILE_EXT]; ok && v != "" && !strings.Contains(v, ext) { return e.NewErrCode(e.ERR_FILE_EXT) } return nil }