/// <summary> /// 识别到人后上传图片和用户信息 /// </summary> /// <param name="siteId"></param> /// <param name="id"></param> /// <param name="score"></param> /// <returns></returns> public async Task <JsonResult> UploadFaceForUserResult(string siteId, string id, string name, string score) { try { var files = HttpContextCore.Current.Request.Form.Files; if (files.Count != 2) { return(Json(new { Code = 2, Msg = "请上传图片!" })); } string file1 = HttpContextCore.MapPath(string.Format("/uploadfiles/FaceResult/{0}/{1:yyyy}/{1:yyyyMMdd}/users/{1:HHmmssfff}_{2}_{3}_full.jpg", siteId, DateTime.Now, name, score)); string file2 = HttpContextCore.MapPath(string.Format("/uploadfiles/FaceResult/{0}/{1:yyyy}/{1:yyyyMMdd}/users/{1:HHmmssfff}_{2}_{3}_cut.jpg", siteId, DateTime.Now, name, score)); if (!Directory.Exists(Path.GetDirectoryName(file1))) { Directory.CreateDirectory(Path.GetDirectoryName(file1)); } using (var stream = System.IO.File.Create(file1)) await files[0].CopyToAsync(stream); using (var stream = System.IO.File.Create(file2)) await files[1].CopyToAsync(stream); return(Json(new { Code = 0, Msg = "保存成功!" })); } catch (Exception ex) { LogHelper.SaveLog(ex); return(Json(new { Code = 1, Msg = "服务器异常,请联系管理员!" })); } }
public ActionResult Download() { string fileURL = Request.Query["fileURL"]; if (fileURL.StartsWith("http")) { return(File(new WebClient().DownloadData(fileURL), "application/octet-stream", Path.GetFileName(fileURL))); } else { string fileName = Path.GetFileName(fileURL); FileStream fs = new FileStream(HttpContextCore.MapPath(fileURL), FileMode.Open); return(File(fs, "application/octet-stream", fileName)); } }
/// <summary> /// 添加人脸特征,更新客户端用户人脸特征库 /// </summary> public static void AddUserFace(SysUser user) { DataContext dbContext = new DataContext(); var faceFeature = FaceCompareHelper.ExtractFeature(HttpContextCore.MapPath(user.UserImage)); if (string.IsNullOrEmpty(faceFeature)) { return; } //保存人脸特征 var feature = dbContext.Set <SysUserFaceFeature>().FirstOrDefault(x => x.UserId == user.UserId); if (feature == null) { feature = new SysUserFaceFeature { UserId = user.UserId, UserName = user.UserName, UserType = "User", FaceImage = user.UserImage, FaceFeature = faceFeature, FaceFeatureType = "", FaceTimeOut = DateTime.Now.AddYears(100), CreateTime = DateTime.Now, UpdateTime = DateTime.Now }; dbContext.Set <SysUserFaceFeature>().Add(feature); } else { feature.UserName = user.UserName; feature.FaceImage = user.UserImage; feature.FaceFeature = faceFeature; feature.UpdateTime = DateTime.Now; } //更新客户端队列(根据业务修改) var data = new Dictionary <string, string> { ["ActionName"] = "AddFace", ["Id"] = user.UserId.ToString(), ["Name"] = user.UserName, ["ImageUrl"] = user.UserImage, ["FaceFeature"] = faceFeature, ["TimeOut"] = DateTime.Now.AddYears(100).ToString() }; SysQueue queue = new SysQueue { Id = Guid.NewGuid(), ClientId = user.DepartmentId.ToString(), ActionName = "AddFace", ActionObjectId = user.UserId.ToString(), ActionData = JsonConvert.SerializeObject(data), CreateTime = DateTime.Now }; dbContext.Set <SysQueue>().Add(queue); dbContext.SaveChanges(); }
public async Task <JsonResult> Upload() { try { IFormFile file = Request.Form.Files[0]; Guid fileId = Guid.NewGuid(); DateTime nowDate = DateTime.Now; string path = string.Format("/uploadfiles/{0:yyyy/MMdd}/{1}", nowDate, fileId); string url = string.Format("{0}/{1}", path, file.FileName); // 服务器的存储全路径 string destFileName = HttpContextCore.MapPath(url); // 创建目录路径 if (!Directory.Exists(Path.GetDirectoryName(destFileName))) { Directory.CreateDirectory(Path.GetDirectoryName(destFileName)); } SysAttachment fileData = new SysAttachment(); fileData.Id = fileId; //fileDatas.RelationID = ""; fileData.Name = file.FileName; fileData.Names = ""; fileData.Url = url; fileData.Type = 0; fileData.Suffix = Path.GetExtension(file.FileName).ToLower(); fileData.Path = path; fileData.Status = 0; fileData.Size = 0; fileData.CreateBy = ""; fileData.CreateByName = SSOClient.User.UserName; fileData.CreateTime = nowDate; string ThumbnailSizes = Request.Form["thumbnailSizes"].FirstOrDefault(); if (isLocal) { //保存本地 using (var stream = System.IO.File.Create(destFileName)) { await file.CopyToAsync(stream); } // 图片文件扩展名验证正则表达式 Regex regexExtension = new Regex(@".*\.(jpg|jpeg|png|gif|bmp)"); if (regexExtension.IsMatch(destFileName.ToLower())) { string[] ThumbnailSizeArr = new string[] { }; //生成缩略图 if (!string.IsNullOrEmpty(ThumbnailSizes) && (ThumbnailSizeArr = ThumbnailSizes.Split(';')).Length > 0) { string[] fileNamesArr = new string[ThumbnailSizeArr.Length]; for (int i = 0; i < ThumbnailSizeArr.Length; i++) { string size = ThumbnailSizeArr[i]; string ThumbFileName = Path.GetFileNameWithoutExtension(url) + "_" + size + fileData.Suffix; string ThumbPath = url.Replace(Path.GetFileName(url), ThumbFileName); ThumbnailHelper.MakeThumbnail(Convert.ToInt32(size), HttpContextCore.MapPath(url), HttpContextCore.MapPath(ThumbPath)); fileNamesArr[i] = ThumbFileName; } fileData.Names = string.Join("|", fileNamesArr); } } } else { //保存文件服务器 HttpClient client = new HttpClient(); MultipartFormDataContent form = new MultipartFormDataContent(); byte[] uploadFileBytes = new byte[file.Length]; file.OpenReadStream().Read(uploadFileBytes, 0, (int)file.Length); MemoryStream stream = new MemoryStream(uploadFileBytes); StreamContent fileContent = new StreamContent(stream); fileContent.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data"); fileContent.Headers.ContentDisposition.FileName = url; form.Add(fileContent); StringContent thumbnailSizes = new StringContent(ThumbnailSizes); thumbnailSizes.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data"); thumbnailSizes.Headers.ContentDisposition.Name = "thumbnailSizes"; form.Add(thumbnailSizes); HttpResponseMessage res = client.PostAsync(fileServer, form).Result; var json = res.Content.ReadAsStringAsync().Result; JObject result = JObject.Parse(json); fileData.Path = (string)result["data"]["path"]; fileData.Names = (string)result["data"]["names"]; fileData.Url = (string)result["data"]["url"]; } return(Json(new { Code = 0, Msg = "", Data = fileData })); } catch (Exception ex) { LogHelper.SaveLog(ex); return(Json(new { Code = 1, Msg = "服务器异常,请联系管理员!" })); } }