From b823f4e3e3e81666ef7400c87c21684dd6f6de2a Mon Sep 17 00:00:00 2001 From: liuxiaolong <736321739@qq.com> Date: 星期四, 05 三月 2020 16:46:20 +0800 Subject: [PATCH] dbperson add car --- controllers/fileController.go | 123 ++++++++++++++++++++++------------------- 1 files changed, 66 insertions(+), 57 deletions(-) diff --git a/controllers/fileController.go b/controllers/fileController.go index 7ac8606..e2495b9 100644 --- a/controllers/fileController.go +++ b/controllers/fileController.go @@ -3,14 +3,15 @@ import ( "basic.com/dbapi.git" "basic.com/fileServer/WeedFSClient.git" + esApi "basic.com/pubsub/esutil.git" "basic.com/pubsub/protomsg.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" @@ -18,7 +19,6 @@ "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 渚濇嵁鍥剧墖娣诲姞搴曞簱杩斿洖鏁版嵁浜哄憳 +// @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" { + fileNameOnly, _, err, faceFeature := 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"] = fileNameOnly + 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) } @@ -774,24 +779,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) { 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 { //鎷垮埌浜鸿劯鐨勫潗鏍� @@ -804,7 +809,7 @@ 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?collection=persistent" //鏍规嵁浜鸿劯鍧愭爣鎵e嚭浜鸿劯灏忓浘 @@ -817,22 +822,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) + result = addDbPerson(dbperson) + } + logger.Debug("addDbPerson鐢ㄦ椂锛�", time.Since(t1)) - return fileNameOnly, result, nil + return fileNameOnly, result, nil,faceBase64 } @@ -889,7 +898,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" { -- Gitblit v1.8.0