public async Task <MemeberFaceUploadResult> UploadMemberandFace() { Member _memberRec = new Member(); FileInfo fileInfo; FaceDetection.FaceDetetctResult faceRes = new FaceDetection.FaceDetetctResult(); try { //--- insert record in to Member table and create a directory - before reading the file ------------- _memberRec.Name = "Name"; _memberRec.DisplayName = "DisplayName"; _memberRec.DateOfBirth = DateTime.ParseExact("15/08/1947", "dd/MM/yyyy", CultureInfo.InvariantCulture); _memberRec.Relation = "Relation"; _memberRec.IsActive = true; _memberRec.IsFaceDetected = false; _memberRec.IsFaceTagged = false; _memberRec.Created = DateTime.Now; _memberRec.UserKey = _userSvc.UserDetails(User.Identity.Name).Key; _memberSvc.Insert(_memberRec); string subPath = _memberRec.Key.ToString(); // your code goes here bool exists = System.IO.Directory.Exists(ServerUploadFolder + subPath); if (!exists) { System.IO.Directory.CreateDirectory(ServerUploadFolder + subPath); } //------------------------------------------------------------------------------------------------------- var streamProvider = new CustomMultipartFormDataStreamProvider(ServerUploadFolder + subPath); await Request.Content.ReadAsMultipartAsync(streamProvider); fileInfo = new FileInfo(streamProvider.FileData.Select(entry => entry.LocalFileName).FirstOrDefault()); //---------------------------- open cv routine to do face detection ------------------------------- faceRes = FaceDetection.DetectFaceSave(fileInfo.Name, ServerUploadFolder + subPath, "", ServerBinFolder, fileInfo.Extension); if (faceRes.Outcome) { //-------------------Face detection successful and continue ---------------------------- _memberRec.Name = streamProvider.FormData["Name"]; _memberRec.DisplayName = streamProvider.FormData["DisplayName"]; _memberRec.DateOfBirth = DateTime.ParseExact(streamProvider.FormData["DateOfBirth"], "dd/MM/yyyy", CultureInfo.InvariantCulture); _memberRec.Relation = streamProvider.FormData["Relation"]; _memberRec.IsFaceDetected = faceRes.FacesDetected > 0 ? true: false; _memberRec.IsFaceTagged = true; _memberRec.FaceImage = faceRes.FacesDetected > 0 ? faceRes.FaceImages.FirstOrDefault() : null; _memberRec.AbsoultePath = ServerUploadFolder + subPath + "\\"; _memberRec.DetectedFaceImage = faceRes.FacesDetected > 0 ? faceRes.SuperImposedImage : fileInfo.Name; _memberRec.AllDetectedFaceImages = faceRes.GetAllFaceImageNames(); _memberRec.UnDetectedFaceImage = fileInfo.Name; _memberRec.DetectedFaceCount = faceRes.FacesDetected; _memberRec.FolderPath = "/UserContent/Member/" + subPath + "/"; _memberRec.OriginalFaceFileName = streamProvider.GetOriginalFileName; _memberRec.FaceDetectionRemarks = faceRes.Remarks(); if (faceRes.FacesDetected > 0) { _memberSvc.UpdateMemberAddFace(_memberRec, faceRes.FaceImages.FirstOrDefault()); } else { _memberSvc.Update(_memberRec); } } else { _memberRec.Name = streamProvider.FormData["Name"]; _memberRec.DisplayName = streamProvider.FormData["DisplayName"]; _memberRec.DateOfBirth = DateTime.ParseExact(streamProvider.FormData["DateOfBirth"], "dd/MM/yyyy", CultureInfo.InvariantCulture); _memberRec.Relation = streamProvider.FormData["Relation"]; _memberRec.IsFaceDetected = false; _memberRec.IsFaceTagged = false; _memberRec.DetectedFaceCount = faceRes.FacesDetected; _memberRec.AbsoultePath = ServerUploadFolder + subPath + "\\"; _memberRec.DetectedFaceImage = fileInfo.Name; _memberRec.UnDetectedFaceImage = fileInfo.Name; _memberRec.FolderPath = "/UserContent/Member/" + subPath + "/"; _memberRec.OriginalFaceFileName = streamProvider.GetOriginalFileName; _memberRec.FaceDetectionRemarks = String.IsNullOrEmpty(faceRes.ErrorMsg) ? "Some Exception" : faceRes.ErrorMsg; _memberSvc.Update(_memberRec); } return(new MemeberFaceUploadResult { IsAddOk = true, FileNames = streamProvider.FileData.Select(entry => entry.LocalFileName).FirstOrDefault(), ErrorMsg = !faceRes.Outcome ? faceRes.ErrorMsg : faceRes.Remarks(), UpdatedTimestamp = DateTime.UtcNow, FacesDetected = faceRes.FacesDetected, MemberId = _memberRec.Key.ToString(), IsFaceDetectionOk = faceRes.Outcome }); } catch (Exception ex) { if (_memberRec.Key > 0) { _memberSvc.Delete(_memberRec); } return(new MemeberFaceUploadResult { IsAddOk = false, FileNames = string.Empty, ErrorMsg = ex.Message, FacesDetected = faceRes.FacesDetected, IsFaceDetectionOk = faceRes.Outcome }); } }
public async Task <MemeberFaceUploadResult> UploadReplacementPhoto() { Member _memberRec; string oldFace = ""; string stringMemberId, subPath; int intMemberId; FileInfo fileInfo = null; FaceDetection.FaceDetetctResult faceRes = new FaceDetection.FaceDetetctResult(); try { var streamProvider = new CustomMultipartFormDataStreamProvider(ServerUploadFolder); await Request.Content.ReadAsMultipartAsync(streamProvider); fileInfo = new FileInfo(streamProvider.FileData.Select(entry => entry.LocalFileName).FirstOrDefault()); if (fileInfo == null) { throw (new Exception("Cannot fine uploaded file")); } stringMemberId = streamProvider.FormData["MemberId"]; if (string.IsNullOrEmpty(stringMemberId)) { if (File.Exists(fileInfo.FullName)) { File.Delete(fileInfo.FullName); } return(new MemeberFaceUploadResult { IsAddOk = false, FileNames = string.Empty, ErrorMsg = "MemberId is missing", FacesDetected = faceRes.FacesDetected, IsFaceDetectionOk = faceRes.Outcome }); } intMemberId = Convert.ToInt32(stringMemberId); _memberRec = _memberSvc.FindMember(User.Identity.Name, intMemberId); if (_memberSvc == null) { if (File.Exists(fileInfo.FullName)) { File.Delete(fileInfo.FullName); } return(new MemeberFaceUploadResult { IsAddOk = false, FileNames = string.Empty, ErrorMsg = "Unauthorized Access", FacesDetected = faceRes.FacesDetected, IsFaceDetectionOk = faceRes.Outcome }); } // recraete the stream with subpath gotten from member retrieved subPath = intMemberId.ToString(); File.Move(fileInfo.FullName, ServerUploadFolder + subPath + "\\" + fileInfo.Name); oldFace = _memberRec.FaceImage; //---------------------------- open cv routine to do face detection ------------------------------- faceRes = FaceDetection.DetectFaceSave(fileInfo.Name, ServerUploadFolder + subPath, "", ServerBinFolder, fileInfo.Extension); if (faceRes.Outcome) { //-------------------Face detection successful and continue ---------------------------- _memberRec.IsFaceDetected = faceRes.FacesDetected > 0 ? true : false; _memberRec.IsFaceTagged = true; _memberRec.FaceImage = faceRes.FacesDetected > 0 ? faceRes.FaceImages.FirstOrDefault() : null; _memberRec.AbsoultePath = ServerUploadFolder + subPath + "\\"; _memberRec.DetectedFaceImage = faceRes.FacesDetected > 0 ? faceRes.SuperImposedImage : fileInfo.Name; _memberRec.AllDetectedFaceImages = faceRes.GetAllFaceImageNames(); _memberRec.UnDetectedFaceImage = fileInfo.Name; _memberRec.DetectedFaceCount = faceRes.FacesDetected; _memberRec.FolderPath = "/UserContent/Member/" + subPath + "/"; _memberRec.OriginalFaceFileName = streamProvider.GetOriginalFileName; _memberRec.FaceDetectionRemarks = faceRes.Remarks(); if (_memberRec.FaceImage != null) { int count = _memberSvc.UpdateMemberReplaceFace(_memberRec, _memberRec.FaceImage, oldFace); } else { _memberSvc.Update(_memberRec); } } else { _memberRec.IsFaceDetected = false; _memberRec.IsFaceTagged = false; _memberRec.DetectedFaceCount = faceRes.FacesDetected; _memberRec.AbsoultePath = ServerUploadFolder + subPath + "\\"; _memberRec.DetectedFaceImage = fileInfo.Name; _memberRec.UnDetectedFaceImage = fileInfo.Name; _memberRec.FolderPath = "/UserContent/Member/" + subPath + "/"; _memberRec.OriginalFaceFileName = streamProvider.GetOriginalFileName; _memberRec.FaceDetectionRemarks = String.IsNullOrEmpty(faceRes.ErrorMsg) ? "Some Exception" : faceRes.ErrorMsg; _memberSvc.Update(_memberRec); } return(new MemeberFaceUploadResult { IsAddOk = true, FileNames = streamProvider.FileData.Select(entry => entry.LocalFileName).FirstOrDefault(), ErrorMsg = !faceRes.Outcome ? faceRes.ErrorMsg : faceRes.Remarks(), UpdatedTimestamp = DateTime.UtcNow, FacesDetected = faceRes.FacesDetected, MemberId = _memberRec.Key.ToString(), IsFaceDetectionOk = faceRes.Outcome }); } catch (Exception ex) { if (fileInfo != null) { if (File.Exists(fileInfo.FullName)) { File.Delete(fileInfo.FullName); } } return(new MemeberFaceUploadResult { IsAddOk = false, FileNames = string.Empty, ErrorMsg = ex.Message, FacesDetected = faceRes.FacesDetected, IsFaceDetectionOk = faceRes.Outcome, UpdatedTimestamp = DateTime.UtcNow }); } }