liuxiaolong
2019-07-20 0c37c84b7a870c159cc03e445dadc3772affbb7d
controllers/fileController.go
@@ -14,13 +14,16 @@
   "log"
   "mime/multipart"
   "net/http"
   "path"
   "strconv"
   "strings"
   "time"
   "webserver/extend/code"
   "webserver/extend/config"
   "webserver/extend/esutil"
   "webserver/extend/util"
   "webserver/models"
   "webserver/service"
)
type FileController struct {
@@ -34,7 +37,6 @@
//var picUrlField = "fid"
/**上传方法**/
var weedfsUri = "http://192.168.1.182:6333/submit"
//var weedfsUri = "http://192.168.1.182:9500/submit"
@@ -71,7 +73,7 @@
      // fastdfs 上传  暂废弃
      //field := fdfsclient.UploadFileByBuffer(data, fileSuffix)
   }
   field, result, err := uploadFileReturnAddr(file, filename, tableId)
   fileNameOnly, result, err := uploadFileReturnAddr(file, filename, tableId)
   if err != nil {
      if err.Error() == "NotFeatureFindError" {
         util.ResponseFormat(c, code.NotFeatureFindError, filename)
@@ -87,7 +89,7 @@
         util.ResponseFormat(c, code.ServiceInsideError, result["data"])
      }
   } else {
      util.ResponseFormat(c, code.Success, field)
      util.ResponseFormat(c, code.Success, fileNameOnly)
   }
}
@@ -99,17 +101,17 @@
      util.ResponseFormat(c, code.RequestParamError, "参数有误")
      return
   }
   var weedfsUri = "http://"+config.WeedFs.Ip+":"+strconv.Itoa(config.WeedFs.UploadPort)+"/submit"
   //将上传的图片交人脸检测和人脸提取,获得特征
   fileBytes, _ := ioutil.ReadAll(file)
   faceExtArr, err, pI := getFaceFeaFromSdk(fileBytes)
   if err ==nil && len(faceExtArr) >0 {
   faceArr, err, pI := service.GetFaceFeaFromSdk(fileBytes, time.Second*5)
   if err ==nil && len(faceArr) >0 {
      var faceBase64= ""
      var field = ""
      var rcFace *protomsg.Rect
      for _,r := range faceExtArr {
         rcFace = r.Pos.Pos.RcFace
      for _,r := range faceArr {
         rcFace = r.Pos.RcFace
         faceBase64 = base64.StdEncoding.EncodeToString(r.Feats)//获取提取到的第一张人脸特征
         break
      }
@@ -150,20 +152,21 @@
   //将上传的图片交人脸检测和人脸提取,获得特征
   var faceBase64=""
   faceExtArr, err,pI := getFaceFeaFromSdk(fileBytes)
   if faceExtArr ==nil {
   faceArr, err, pI := service.GetFaceFeaFromSdk(fileBytes, time.Second*5)
   if faceArr ==nil {
      return "",nil,errors.New("NotFeatureFindError")
   }
   var rcFace *protomsg.Rect
   if err ==nil && len(faceExtArr) >0 {
      for _,r := range faceExtArr {
   if err ==nil && len(faceArr) >0 {
      for _,r := range faceArr {
         //拿到人脸的坐标
         rcFace = r.Pos.Pos.RcFace
         rcFace = r.Pos.RcFace
         faceBase64 = base64.StdEncoding.EncodeToString(r.Feats)//获取提取到的第一张人脸特征
         break
      }
   }
   var weedfsUri = "http://"+config.WeedFs.Ip+":"+strconv.Itoa(config.WeedFs.UploadPort)+"/submit"
   //根据人脸坐标扣出人脸小图
   cutFaceImgData := util.SubImg(*pI, int(rcFace.Left), int(rcFace.Top), int(rcFace.Right), int(rcFace.Bottom))
   fileInfo, e := esutil.PostFormData(weedfsUri, filename, "file", cutFaceImgData)
@@ -178,40 +181,42 @@
      field = field[idx+1:]
   }
   fmt.Println("field:",field)
   ext := path.Ext(filename)
   fileNameOnly := strings.TrimSuffix(filename, ext)
   dbperson := new(models.Dbtablepersons)
   dbperson.PersonPicUrl = field //  图片路经
   dbperson.TableId = tableId           //
   dbperson.PersonName = filename       // 图片名
   dbperson.PersonName = fileNameOnly       // 图片名
   // 演示base64编码
   dbperson.FaceFeature = faceBase64 // 特征值base64 码
   result := addDbPerson(dbperson)
   return field, result, nil
   return fileNameOnly, result, nil
}
func getFaceFeaFromSdk(fileBytes []byte) ([]*protomsg.ResultFaceExtCom,error,*protomsg.Image){
   s := service.NewFaceSdkService(fileBytes)
   i, err := s.ReadFromUploadImg()
   if err !=nil{
      fmt.Println("readFromUploadImg err:",err)
      return nil,err,i
   }
   bc, err := service.ImgCompress(i)
   if err !=nil {
      fmt.Println("ImgCompress err:",err)
      return nil,err,i
   }
   s.PushImgMsg(bc)
   s.GetFaceFea()
   if s.Result == nil{
      return nil,errors.New("no fea"),i
   } else {
      return s.Result,nil,i
   }
}
//func getFaceFeaFromSdk(fileBytes []byte) ([]*protomsg.ResultFaceExtCom,error,*protomsg.Image){
//   s := service.NewFaceSdkService(fileBytes)
//   i, err := s.ReadFromUploadImg()
//   if err !=nil{
//      fmt.Println("readFromUploadImg err:",err)
//      return nil,err,i
//   }
//   bc, err := service.ImgCompress(i)
//   if err !=nil {
//      fmt.Println("ImgCompress err:",err)
//      return nil,err,i
//   }
//   s.PushImgMsg(bc)
//   s.GetFaceFea()
//   if s.Result == nil{
//      return nil,errors.New("no fea"),i
//   } else {
//      return s.Result,nil,i
//   }
//}
/**上传方法**/
@@ -312,6 +317,7 @@
      util.ResponseFormat(c, code.UploadFileError, err2.Error())
      return
   }
   var weedfsUri = "http://"+config.WeedFs.Ip+":"+strconv.Itoa(config.WeedFs.UploadPort)+"/submit"
   {
      uri := weedfsUri
      fileInfo, e := esutil.PostFormBufferData(uri, filename, "file", uploadData)