package svc import ( "applet/app/db" "applet/app/e" "applet/app/enum" "applet/app/lib/qiniu" "applet/app/md" "applet/app/utils" "errors" "fmt" "strings" "time" ) // 请求文件上传 func ImgReqUpload(uid, dirName, fname, callbackUrl string, fsize int64) (interface{}, error) { ext := utils.FileExt(fname) if err := initStg(fsize, ext); err != nil { return nil, err } pureFileName := strings.Replace(fname, "."+ext, "", 1) pureFileName += "-" + utils.RandString(6, utils.AnyToString(time.Now().UnixNano())) newName := dirName + "/" + pureFileName + "." + ext f := &md.FileCallback{ Uid: uid, DirId: dirName, FileName: newName, } return qiniu.ReqImgUpload(f, callbackUrl), nil } func initStg(fsize int64, ext string) error { // 获取上传配置 fileCfg := make(map[string]string) sysCfgDb := db.SysCfgDb{} sysCfgDb.Set() fileCfg[enum.FileBucket] = sysCfgDb.SysCfgGetWithDb(enum.FileBucket) fileCfg[enum.FileBucketHost] = sysCfgDb.SysCfgGetWithDb(enum.FileBucketHost) fileCfg[enum.FileAccessKey] = sysCfgDb.SysCfgGetWithDb(enum.FileAccessKey) fileCfg[enum.FileSecretKey] = sysCfgDb.SysCfgGetWithDb(enum.FileSecretKey) fileCfg[enum.FileBucketRegion] = sysCfgDb.SysCfgGetWithDb(enum.FileBucketRegion) fileCfg[enum.FileUserUploadMaxSize] = sysCfgDb.SysCfgGetWithDb(enum.FileUserUploadMaxSize) fileCfg[enum.FileExt] = sysCfgDb.SysCfgGetWithDb(enum.FileExt) fileCfg[enum.FileBucketScheme] = sysCfgDb.SysCfgGetWithDb(enum.FileBucketScheme) utils.FilePutContents("initStg", fmt.Sprintf("[KEY_CFG_FILE_BUCKET]:%s ; [KEY_CFG_FILE_HOST]:%s ; [KEY_CFG_FILE_AK]::%s;"+ " [KEY_CFG_FILE_SK]::%s, ;[KEY_CFG_FILE_REGION]::%s, ;[KEY_CFG_FILE_MAX_SIZE]::%s, ;[KEY_CFG_FILE_EXT]::%s, ;[KEY_CFG_FILE_SCHEME]::%s, "+ ">>>>>>>>>>>>>>>>>>>>", fileCfg[enum.FileBucket], fileCfg[enum.FileBucketHost], fileCfg[enum.FileAccessKey], fileCfg[enum.FileSecretKey], fileCfg[enum.FileBucketRegion], fileCfg[enum.FileUserUploadMaxSize], fileCfg[enum.FileExt], fileCfg[enum.FileBucketScheme])) for _, v := range fileCfg { if v == "" { return errors.New("上传配置不完整") } } qiniu.Init(fileCfg[enum.FileAccessKey], fileCfg[enum.FileSecretKey], fileCfg[enum.FileBucket], fileCfg[enum.FileBucketRegion], fileCfg[enum.FileBucketScheme]) // 检查文件大小限制 if utils.StrToInt64(fileCfg[enum.FileUserUploadMaxSize]) < fsize { return e.NewErrCode(e.ERR_FILE_MAX_SIZE) } // 检查文件后缀 if !strings.Contains(fileCfg[enum.FileExt], ext) { return e.NewErrCode(e.ERR_FILE_EXT) } return nil }