From 9303b69ea569bcb5e581147543a3fd58e90d0d25 Mon Sep 17 00:00:00 2001 From: sunty <1172534965@qq.com> Date: 星期四, 20 八月 2020 20:05:23 +0800 Subject: [PATCH] add get buckets contrl --- controllers/fileController.go | 326 +++++++++++++++++++++++++++++++---------------------- 1 files changed, 190 insertions(+), 136 deletions(-) diff --git a/controllers/fileController.go b/controllers/fileController.go index 643ccc4..1f591af 100644 --- a/controllers/fileController.go +++ b/controllers/fileController.go @@ -3,22 +3,22 @@ import ( "basic.com/dbapi.git" "basic.com/fileServer/WeedFSClient.git" + esApi "basic.com/pubsub/esutil.git" "basic.com/pubsub/protomsg.git" + "basic.com/valib/godraw.git" + "basic.com/valib/logger.git" "bytes" "encoding/base64" "encoding/json" "errors" "fmt" "github.com/gin-gonic/gin" - "github.com/satori/go.uuid" - "gocv.io/x/gocv" "image" "image/color" "image/jpeg" "io/ioutil" "log" "mime/multipart" - "net/http" "path" "sort" "strconv" @@ -29,11 +29,9 @@ "webserver/extend/code" "webserver/extend/config" "webserver/extend/esutil" - "basic.com/valib/logger.git" "webserver/extend/util" "webserver/models" "webserver/service" - esApi "basic.com/pubsub/esutil.git" ) type FileController struct { @@ -51,57 +49,64 @@ //var weedfsUri = "http://192.168.1.182:9500/submit" // @Security ApiKeyAuth -// @Summary 渚濇嵁鍥剧墖娣诲姞搴曞簱浜哄憳 -// @Description 渚濇嵁鍥剧墖娣诲姞搴曞簱杩斿洖鏁版嵁浜哄憳 -// @Accept mpfd +// @Summary 鍥剧墖涓婁紶 +// @Description 鍥剧墖涓婁紶 +// @Accept multipart/form-data // @Produce json -// @Tags dbperson 搴曞簱浜哄憳 -// @Param file formData file true "搴曞簱浜哄憳鍥剧墖" -// @Param tableId formData string false "搴曞簱id,鏈塱d 鍒欏姞鍏ュ簳搴擄紝鏃犲垯鍙笂浼犲浘鐗�" -// @Success 200 {string} json "{"code":200, msg:"鐩綍缁撴瀯鏁版嵁", success:true}" -// @Failure 500 {string} json "{"code":500, msg:"杩斿洖閿欒淇℃伅", success:false}" +// @Tags 鍥剧墖涓婁紶 +// @Param file formData file true "鍥剧墖" +// @Param picType formData string true "鍥剧墖绫诲瀷锛�0锛氳溅杈嗙収鐗囷紝1锛氫汉鑴哥収鐗�" +// @Success 200 {string} json "{"code":200, msg:"", success:true}" +// @Failure 500 {string} json "{"code":500, msg:"", success:false}" // @Router /data/api-v/dbperson/fileupload [POST] func (fc FileController) Fileupload(c *gin.Context) { //寰楀埌涓婁紶鐨勬枃浠� file, header, err := c.Request.FormFile("file") //image杩欎釜鏄痷plaodify鍙傛暟瀹氫箟涓殑 'fileObjName':'image' - tableId := c.Request.FormValue("tableId") - if err != nil { - c.String(http.StatusBadRequest, "Bad request") + picType := c.Request.FormValue("picType") //鍥剧墖绫诲瀷 + if err != nil || (picType != "0" && picType != "1") { + util.ResponseFormat(c, code.RequestParamError, "鍙傛暟鏈夎") return } //鏂囦欢鐨勫悕绉� filename := header.Filename - fmt.Println(file, err, filename) - if err != nil { - log.Fatal(err) - filename = uuid.NewV4().String() - } - // fastdfs - { - //fileSuffix := path.Ext(filename)[1:] //鑾峰彇鏂囦欢鍚庣紑 - //fmt.Println("鏂囦欢鍚庣紑 =", fileSuffix) - //data, _ := ioutil.ReadAll(file) - // fastdfs 涓婁紶 鏆傚簾寮� - //field := fdfsclient.UploadFileByBuffer(data, fileSuffix) - } - fileNameOnly, result, err := uploadFileReturnAddr(file, filename, tableId) - if err != nil { - if err.Error() == "NotFeatureFindError" { - util.ResponseFormat(c, code.NotFeatureFindError, filename) - } else { - util.ResponseFormat(c, code.ServiceInsideError, err.Error()) + var result = make(map[string]string) + if picType == "1" { + _, _, err, faceFeature, faceUrlPath := uploadFileReturnAddr(file, filename, "", false) + if err != nil { + if err.Error() == "NotFeatureFindError" { + util.ResponseFormat(c, code.NotFeatureFindError, filename) + } else { + util.ResponseFormat(c, code.ServiceInsideError, err.Error()) + } + return } - return - } - if tableId != "" { // 涓婁紶 - if result["success"].(bool) { - util.ResponseFormat(c, code.Success, result["data"]) - } else { - util.ResponseFormat(c, code.ServiceInsideError, result["data"]) - } + result["picUrl"] = faceUrlPath + result["faceFeature"] = faceFeature } else { - util.ResponseFormat(c, code.Success, fileNameOnly) + localConf, err2 := cache.GetServerInfo() + if err2 !=nil || localConf.WebPicIp == "" { + logger.Debug("localConfig is wrong!!!") + util.ResponseFormat(c,code.ComError,"") + return + } + defer file.Close() + // weedfs 涓婁紶 + fileBytes, err := ioutil.ReadAll(file) + if err !=nil { + util.ResponseFormat(c,code.ComError,"") + return + } + var weedfsUri = "http://"+localConf.WebPicIp+":"+strconv.Itoa(int(localConf.WebPicPort))+"/submit?collection=persistent" + weedFilePath, e := WeedFSClient.UploadFile(weedfsUri, filename, fileBytes) + if e != nil { + logger.Debug("WeedFSClient.UploadFile err:", e) + util.ResponseFormat(c,code.ComError,"UploadFile err") + return + } + result["picUrl"] = weedFilePath } + + util.ResponseFormat(c, code.Success, result) } @@ -114,6 +119,7 @@ // @Security ApiKeyAuth // @Summary 浜鸿劯鎻愬彇 // @Description 浜鸿劯鎻愬彇 +// @Accept multipart/form-data // @Produce json // @Tags 浠ュ浘鎼滃浘 // @Param file formData file true "浜哄憳鍥剧墖" @@ -131,7 +137,7 @@ logger.Debug("localConfig is wrong!!!") return } - var weedfsUri = "http://"+localConf.WebPicIp+":"+strconv.Itoa(int(localConf.WebPicPort))+"/submit" + var weedfsUri = "http://"+localConf.WebPicIp+":"+strconv.Itoa(int(localConf.WebPicPort))+"/submit?collection=persistent" logger.Debug("weedfsUri:",weedfsUri) resultMap :=make(map[string]interface{},0) //灏嗕笂浼犵殑鍥剧墖浜や汉鑴告娴嬪拰浜鸿劯鎻愬彇锛岃幏寰楃壒寰� @@ -142,7 +148,11 @@ urlArr := make([]string,0) for _,r := range faceArr { rcFace := r.Pos.RcFace - cutFaceImgData := util.SubImg(*pI, int(rcFace.Left), int(rcFace.Top), int(rcFace.Right), int(rcFace.Bottom)) + cutFaceImgData,cutErr := util.SubCutImg(pI, rcFace, 20) + if cutErr != nil { + logger.Debug("util.SubCutImg err:", cutErr) + continue + } weedFilePath, e := WeedFSClient.UploadFile(weedfsUri, "FaceUrl", cutFaceImgData) if e == nil{ faceExtractedMap[weedFilePath] = FaceExtract{ @@ -165,34 +175,32 @@ } func drawPolygonOnImg(i *protomsg.Image,faceArr *[]*protomsg.ResultFaceDetect) (*[]byte,error) { - rook, _ := gocv.NewMatFromBytes(int(i.Height), int(i.Width), gocv.MatTypeCV8UC3, i.Data) - defer rook.Close() - //yellow := color.RGBA{255, 255, 0, 0} + img,err := godraw.ToImage(i.Data, int(i.Width), int(i.Height)) + if err != nil { + return nil,err + } red := color.RGBA{255, 0, 0, 0} for _,faceResult := range *faceArr { - left := int(faceResult.Pos.RcFace.Left) - top := int(faceResult.Pos.RcFace.Top) - right := int(faceResult.Pos.RcFace.Right) - bottom := int(faceResult.Pos.RcFace.Bottom) - gocv.Rectangle(&rook, image.Rect(left,top,right,bottom), red, 1) + util.DrawRect(img.(*image.RGBA),int(faceResult.Pos.RcFace.Left),int(faceResult.Pos.RcFace.Top),int(faceResult.Pos.RcFace.Right), + int(faceResult.Pos.RcFace.Bottom), red) } - fData,err := gocv.IMEncode(".jpg", rook) - return &fData,err + + quantity := 100 + jpgData, err := godraw.ImageToJpeg(img, &quantity) + return &jpgData,err } type CompareResult struct { Id string `json:"id"` - CompareScore float32 `json:"compareScore"` + CompareScore float64 `json:"compareScore"` CameraId string `json:"cameraId"` + CameraName string `json:"cameraName"` CameraAddr string `json:"cameraAddr"` PicDate string `json:"picDate"` Content string `json:"content"` - IsAlarm int `json:"isAlarm"` - PicMaxUrl string `json:"picMaxUrl"` - PicSmUrl []string `json:"picSmUrl"` - Sex string `json:"sex"` - AgeDescription string `json:"ageDescription"` - Race string `json:"race"` + IsAlarm bool `json:"isAlarm"` + PicMaxUrl []string `json:"picMaxUrl"` + TargetInfo []TargetInfo `json:"targetInfo"` TaskId string `json:"taskId"` TaskName string `json:"taskName"` BaseInfo []DbPersonVo `json:"baseInfo"` @@ -200,23 +208,37 @@ SdkName string `json:"sdkName"` AlarmRules []AlarmRuleVo `json:"alarmRules"` } + +type TargetInfo struct { + TargetId string `json:"targetId"` + TargetType string `json:"targetType"` + TargetScore float64 `json:"targetScore"` + Feature string `json:"feature"` + PicSmUrl string `json:"picSmUrl"` + TargetLocation TargetLocation `json:"targetLocation"` +} + +type TargetLocation struct { + TopLeft protomsg.Location `json:"topLeft"` + BottomRight protomsg.Location `json:"bottomRight"` +} + type DbPersonVo struct { - BwType string `json:"bwType"` - CompareScore float32 `json:"compareScore"` - IdCard string `json:"idCard"` - MonitorLevel string `json:"monitorLevel"` - PersonId string `json:"personId"` - PersonName string `json:"personName"` - PersonPicUrl string `json:"personPicUrl"` - PhoneNum string `json:"phoneNum"` - Sex string `json:"sex"` TableId string `json:"tableId"` TableName string `json:"tableName"` + BwType string `json:"bwType"` + CompareScore float64 `json:"compareScore"` + TargetId string `json:"targetId"` + TargetName string `json:"targetName"` + TargetPicUrl string `json:"targetPicUrl"` + MonitorLevel string `json:"monitorLevel"` + Labels string `json:"labels"` + Content string `json:"content"` Enable int32 `json:"enable"` } type ScoreIndex struct { - CompareScore float32 + CompareScore float64 Index int } @@ -241,13 +263,13 @@ if v.Tableid == service.CaptureTable { captureM[v.Id] = ScoreIndex{ Index: idx, - CompareScore: v.CompareScore, + CompareScore: util.ParseScore64(float64(v.CompareScore)), } captureIds = append(captureIds,v.Id) } else { dbPersonM[v.Id] = ScoreIndex{ Index: idx, - CompareScore: v.CompareScore, + CompareScore: util.ParseScore64(float64(v.CompareScore)), } personIds = append(personIds,v.Id) } @@ -265,15 +287,14 @@ var dtApi dbapi.DbTableApi for _,p :=range dbpersons { var dbP = DbPersonVo { - PersonId: p.Id, - IdCard: p.IdCard, - CompareScore: util.ParseScore(dbPersonM[p.Id].CompareScore), + TargetId: p.Id, + CompareScore: dbPersonM[p.Id].CompareScore, MonitorLevel: p.MonitorLevel, - PersonName: p.PersonName, - PersonPicUrl: p.PersonPicUrl, - PhoneNum: p.PhoneNum, - Sex: p.Sex, + TargetName: p.PersonName, + TargetPicUrl: p.PersonPicUrl, + Labels: p.PhoneNum+"/"+p.Sex+"/"+p.IdCard, TableId: p.TableId, + Content: p.Reserved, Enable: p.Enable, } dbTableInfos, _ := dtApi.DbtablesById([]string{ p.TableId }) @@ -294,23 +315,20 @@ return nil } logger.Debug("captureIds:",strings.Join(captureIds,",")) - videopersons, _ := esApi.Videopersonsinfosbyid(captureIds, config.EsInfo.EsIndex.VideoPersons.IndexName, localConf.AlarmIp, strconv.Itoa(int(localConf.AlarmPort))) - logger.Debug("comp videoPersons.len:",len(videopersons)) - for _,vp :=range videopersons { - isAlarmInt, _ := strconv.Atoi(vp.IsAlarm) - bi := make([]DbPersonVo,0) + aiTargets, _ := esApi.AIOceaninfosbyid(captureIds, config.EsInfo.EsIndex.AiOcean.IndexName, localConf.AlarmIp, strconv.Itoa(int(localConf.AlarmPort))) + logger.Debug("comp aiTargets.len:",len(aiTargets)) + for _,vp :=range aiTargets { + var bi []DbPersonVo for _,p :=range vp.BaseInfo { bi = append(bi, DbPersonVo{ - PersonId: p.PersonId, - IdCard: p.IdCard, - CompareScore: util.ParseScore(p.CompareScore), - MonitorLevel: parseMonitorLevel(p.MonitorLevel), - PersonName: p.PersonName, - PersonPicUrl: p.PersonPicUrl, - PhoneNum: p.PhoneNum, - Sex: p.Sex, + TargetId: p.TargetId, + CompareScore: util.ParseScore64(p.CompareScore), + MonitorLevel: p.MonitorLevel, + TargetName: p.TargetName, + TargetPicUrl: p.TargetPicUrl, + Labels: p.Labels, TableId: p.TableId, - BwType: strconv.Itoa(int(p.BwType)), + BwType: p.BwType, TableName: p.TableName, }) } @@ -327,18 +345,41 @@ }) } } + var ti = make([]TargetInfo,0) + if vp.TargetInfo !=nil { + for _,vti :=range vp.TargetInfo { + tl := protomsg.Location{ + X: vti.TargetLocation.TopLeft.X, + Y: vti.TargetLocation.TopLeft.Y, + } + br := protomsg.Location{ + X: vti.TargetLocation.BottomRight.X, + Y: vti.TargetLocation.BottomRight.Y, + } + tInfo := TargetInfo{ + TargetId: vti.TargetId, + TargetType: vti.TargetType, + TargetScore: vti.TargetScore, + Feature: vti.Feature, + PicSmUrl: vti.PicSmUrl, + TargetLocation: TargetLocation{ + TopLeft:tl, + BottomRight:br, + }, + } + ti = append(ti, tInfo) + } + } vpE := CompareResult{ Id: vp.Id, - CompareScore: util.ParseScore(captureM[vp.Id].CompareScore), + CompareScore: captureM[vp.Id].CompareScore, CameraId: vp.CameraId, + CameraName: vp.CameraName, CameraAddr: vp.CameraAddr, PicDate: vp.PicDate, PicMaxUrl: vp.PicMaxUrl, - PicSmUrl: vp.PicSmUrl, - IsAlarm: isAlarmInt, - Sex: vp.Sex, - AgeDescription: vp.AgeDescription, - Race: vp.Race, + TargetInfo: ti, + IsAlarm: vp.IsAlarm, TaskName: vp.TaskName, TaskId: vp.TaskId, VideoUrl: vp.VideoUrl, @@ -371,12 +412,12 @@ logger.Debug("localConfig is wrong!!!") return nil,"",nil,errors.New("localConf err") } - var weedfsUri = "http://"+localConf.WebPicIp+":"+strconv.Itoa(int(localConf.WebPicPort))+"/submit" + var weedfsUri = "http://"+localConf.WebPicIp+":"+strconv.Itoa(int(localConf.WebPicPort))+"/submit?collection=persistent" logger.Debug("weedfsUri:",weedfsUri) faceArr, err, pI := service.GetFaceFeaFromSdk(fileBytes, time.Second*60) if err ==nil && len(faceArr) ==1 { rcFace := faceArr[0].Pos.RcFace - cutFaceImgData := util.SubImg(*pI, int(rcFace.Left), int(rcFace.Top), int(rcFace.Right), int(rcFace.Bottom)) + cutFaceImgData,_ := util.SubCutImg(pI, rcFace, 20) weedFilePath, e := WeedFSClient.UploadFile(weedfsUri, "FaceUrl", cutFaceImgData) if e == nil{ faceExtractedMap[weedFilePath] = FaceExtract{ @@ -442,7 +483,7 @@ return } } else { - searchBase64Fea, err := esApi.GetVideoPersonFaceFeatureById(searchBody.CompTargetId, config.EsInfo.EsIndex.VideoPersons.IndexName, localConf.AlarmIp, strconv.Itoa(int(localConf.AlarmPort))) + searchBase64Fea, err := esApi.GetVideoPersonFaceFeatureById(searchBody.CompTargetId, config.EsInfo.EsIndex.AiOcean.IndexName, localConf.AlarmIp, strconv.Itoa(int(localConf.AlarmPort))) if err !=nil { util.ResponseFormat(c, code.ComError, "鎶撴媿鏁版嵁涓嶅瓨鍦紝璇锋鏌�") return @@ -455,6 +496,9 @@ return } faceB = decodeF + } else { + util.ResponseFormat(c, code.ComError, "鏈潯浜鸿劯鎶撴媿鐗瑰緛涓虹┖锛岃妫�鏌�") + return } } @@ -493,8 +537,9 @@ } else { arg.TableIds = []string{} } + alarmLevelTypes := strings.Replace(strings.Trim(fmt.Sprint(getAlarmLevel(searchBody.AlarmLevel)), "[]"), " ", "\",\"", -1) arg.Source = true // 鏍囪瘑鏉ユ簮鏄痺eb - arg.AlarmLevel = searchBody.AlarmLevel + arg.AlarmLevel = alarmLevelTypes arg.Tasks = searchBody.Tasks arg.TreeNodes = searchBody.TreeNodes arg.Tabs = searchBody.Tabs @@ -579,8 +624,9 @@ } localConf, err := cache.GetServerInfo() if err ==nil && localConf.AlarmIp != "" && localConf.ServerId != "" { + alarmLevelTypes := strings.Replace(strings.Trim(fmt.Sprint(getAlarmLevel(searchBody.AlarmLevel)), "[]"), " ", "\",\"", -1) arg.Source = true // 鏍囪瘑鏉ユ簮鏄痺eb - arg.AlarmLevel = searchBody.AlarmLevel + arg.AlarmLevel = alarmLevelTypes arg.Tasks = searchBody.Tasks arg.TreeNodes = searchBody.TreeNodes arg.Tabs = searchBody.Tabs @@ -588,8 +634,8 @@ arg.InputValue = searchBody.InputValue arg.Collection = searchBody.Collection arg.AnalyServerId = localConf.ServerId - alarmLevelTypes := strings.Replace(strings.Trim(fmt.Sprint(getAlarmLevel(searchBody.AlarmLevel)), "[]"), " ", "\",\"", -1) - captureIds := esApi.GetAllLocalVideopersonsId(arg, config.EsInfo.EsIndex.VideoPersons.IndexName, localConf.AlarmIp, strconv.Itoa(int(localConf.AlarmPort)), alarmLevelTypes) + + captureIds := esApi.GetAllLocalVideopersonsId(arg, config.EsInfo.EsIndex.AiOcean.IndexName, localConf.AlarmIp, strconv.Itoa(int(localConf.AlarmPort)), alarmLevelTypes) logger.Debug("searchPhoto first Result.len:",len(*co.CompareData),"twice len(captureIds):",len(captureIds)) if captureIds !=nil { var aResult protomsg.SdkCompareResult @@ -708,7 +754,7 @@ logger.Debug("localConfig is wrong!!!") return } - var weedfsUri = "http://"+localConf.WebPicIp+":"+strconv.Itoa(int(localConf.WebPicPort))+"/submit" + var weedfsUri = "http://"+localConf.WebPicIp+":"+strconv.Itoa(int(localConf.WebPicPort))+"/submit?collection=persistent" //灏嗕笂浼犵殑鍥剧墖浜や汉鑴告娴嬪拰浜鸿劯鎻愬彇锛岃幏寰楃壒寰� fileBytes, _ := ioutil.ReadAll(file) @@ -722,7 +768,7 @@ break } //鏍规嵁浜鸿劯鍧愭爣鎵e嚭浜鸿劯灏忓浘 - cutFaceImgData := util.SubImg(*pI, int(rcFace.Left), int(rcFace.Top), int(rcFace.Right), int(rcFace.Bottom)) + cutFaceImgData,_ := util.SubCutImg(pI, rcFace, 20) weedFilePath, e := WeedFSClient.UploadFile(weedfsUri, "testCutFace", cutFaceImgData) if e !=nil{ util.ResponseFormat(c,code.ComError,"鏂囦欢涓婁紶澶辫触") @@ -740,24 +786,24 @@ log.Fatalln(err) }*/ -func uploadFileReturnAddr(file multipart.File, filename string, tableId string) (string, map[string]interface{}, error) { +func uploadFileReturnAddr(file multipart.File, filename string, tableId string, add2Db bool) (string, map[string]interface{}, error, string, string) { defer file.Close() // weedfs 涓婁紶 fileBytes, err := ioutil.ReadAll(file) if err !=nil { - return "",nil,err + return "",nil,err,"","" } //灏嗕笂浼犵殑鍥剧墖浜や汉鑴告娴嬪拰浜鸿劯鎻愬彇锛岃幏寰楃壒寰� var faceBase64="" faceArr, err, pI := service.GetFaceFeaFromSdk(fileBytes, time.Second*5) if faceArr ==nil { - return "",nil,errors.New("NotFeatureFindError") + return "",nil,errors.New("NotFeatureFindError"),"","" } var rcFace *protomsg.Rect if err ==nil && len(faceArr) >0 { if len(faceArr) >1 { - return "",nil, errors.New("TooManyFaces") + return "",nil, errors.New("TooManyFaces"),"","" } for _,r := range faceArr { //鎷垮埌浜鸿劯鐨勫潗鏍� @@ -770,12 +816,16 @@ localConf, err2 := cache.GetServerInfo() if err2 !=nil || localConf.WebPicIp == "" { logger.Debug("localConfig is wrong!!!") - return "",nil,err2 + return "",nil,err2,"","" } - var weedfsUri = "http://"+localConf.WebPicIp+":"+strconv.Itoa(int(localConf.WebPicPort))+"/submit" + var weedfsUri = "http://"+localConf.WebPicIp+":"+strconv.Itoa(int(localConf.WebPicPort))+"/submit?collection=persistent" //鏍规嵁浜鸿劯鍧愭爣鎵e嚭浜鸿劯灏忓浘 t1 := time.Now() - cutFaceImgData := util.SubImg(*pI, int(rcFace.Left), int(rcFace.Top), int(rcFace.Right), int(rcFace.Bottom)) + cutFaceImgData,cutErr := util.SubCutImg(pI, rcFace, 20) + if cutErr != nil { + logger.Debug("util.SubCutImg err:", cutErr) + return "", nil, cutErr,"","" + } logger.Debug("SubImg鐢ㄦ椂锛�", time.Since(t1)) t1 = time.Now() weedFilePath, e := WeedFSClient.UploadFile(weedfsUri, filename, cutFaceImgData) @@ -783,22 +833,26 @@ t1 = time.Now() if e != nil { logger.Debug("WeedFSClient.UploadFile err:", e) - return "", nil, e + return "", nil, e,"","" } ext := path.Ext(filename) fileNameOnly := strings.TrimSuffix(filename, ext) - dbperson := new(models.Dbtablepersons) - dbperson.PersonPicUrl = weedFilePath // 鍥剧墖璺粡 - dbperson.TableId = tableId // - dbperson.PersonName = fileNameOnly // 鍥剧墖鍚� - dbperson.Enable = 1 //榛樿鏈夋晥 - dbperson.FaceFeature = faceBase64 // 鐗瑰緛鍊糱ase64 鐮� + var result map[string]interface{} + if add2Db { + dbperson := new(models.Dbtablepersons) + dbperson.PersonPicUrl = weedFilePath // 鍥剧墖璺粡 + dbperson.TableId = tableId // + dbperson.PersonName = fileNameOnly // 鍥剧墖鍚� + dbperson.Enable = 1 //榛樿鏈夋晥 + dbperson.FaceFeature = faceBase64 // 鐗瑰緛鍊糱ase64 鐮� - result := addDbPerson(dbperson) - logger.Debug("addDbPerson鐢ㄦ椂锛�", time.Since(t1)) - return fileNameOnly, result, nil + result = addDbPerson(dbperson) + } + + logger.Debug("addDbPerson鐢ㄦ椂锛�", time.Since(t1), "result:", result) + return fileNameOnly, result, nil,faceBase64, weedFilePath } @@ -807,7 +861,7 @@ // @Security ApiKeyAuth // @Summary 鎵归噺娣诲姞搴曞簱浜哄憳 // @Description 渚濇嵁鍥剧墖鎵归噺娣诲姞搴曞簱浜哄憳 -// @Accept mpfd +// @Accept multipart/form-data // @Produce json // @Tags dbperson 搴曞簱浜哄憳 // @Param files formData file[] true "澶氫釜搴曞簱浜哄憳鍥剧墖" @@ -827,10 +881,10 @@ } extNames := make([]string, 0) addResult := make(map[string]interface{}, 0) - var successList []string - var failList []string - var noFaceList []string - var multiFaceList []string + successList := make([]string,0) + failList := make([]string,0) + noFaceList := make([]string,0) + multiFaceList := make([]string,0) tAllStart := time.Now() var wg sync.WaitGroup var lock sync.Mutex @@ -855,7 +909,7 @@ lock.Unlock() return } - field, _, err1 := uploadFileReturnAddr(file, filename, tableId) + field, _, err1,_,_ := uploadFileReturnAddr(file, filename, tableId, true) lock.Lock() if err1 != nil || field == "" { if err1 !=nil && err1.Error() == "NotFeatureFindError" { @@ -898,7 +952,7 @@ // @Security ApiKeyAuth // @Summary 涓婁紶鍥剧墖 骞跺垏鍥� // @Description 涓婁紶鍥剧墖 骞跺垏鍥� -// @Accept mpfd +// @Accept multipart/form-data // @Produce json // @Tags dbperson 搴曞簱浜哄憳 // @Param file formData file true "搴曞簱浜哄憳鍥剧墖" @@ -932,7 +986,7 @@ logger.Debug("localConfig is wrong!!!") return } - var weedfsUri = "http://"+localConf.WebPicIp+":"+strconv.Itoa(int(localConf.WebPicPort))+"/submit" + var weedfsUri = "http://"+localConf.WebPicIp+":"+strconv.Itoa(int(localConf.WebPicPort))+"/submit?collection=persistent" { uri := weedfsUri fileInfo, e := esutil.PostFormBufferData(uri, filename, "file", uploadData) -- Gitblit v1.8.0