public async Task <IActionResult> UploadScreenshot([FromServices] ContextString dbContext) { QianMuResult _Result = new QianMuResult(); QMLog qm = new QMLog(); try { System.Text.ASCIIEncoding ASCII = new System.Text.ASCIIEncoding(); int _LenDec = 6; //长度说明占位长度 int _JsonLen = 0; //长度 int _HeadLen = 0; //头部长度 JsonModel jmodel = new JsonModel(); //声明字符数据,将获取到的流信息读到字符数组中 byte[] byteArray = new byte[HttpContext.Request.ContentLength.Value]; using (Stream stream = HttpContext.Request.Body) { int readCount = 0; // 已经成功读取的字节的个数 while (readCount < HttpContext.Request.ContentLength.Value) { readCount += stream.Read(byteArray, readCount, (int)HttpContext.Request.ContentLength.Value - readCount); } } //读取Json长度 string jsonLength = ASCII.GetString(byteArray, 0, _LenDec); _JsonLen = int.Parse(jsonLength.TrimStart('0')); _HeadLen = _LenDec + _JsonLen; //读取json信息 string inputStr = ASCII.GetString(byteArray, _LenDec, _JsonLen); jmodel = (JsonModel)Newtonsoft.Json.JsonConvert.DeserializeObject(inputStr, jmodel.GetType()); string code = jmodel.Code; string filename = jmodel.FileName; //检测用户输入格式 if (String.IsNullOrEmpty(code)) { _Result.Code = "510"; _Result.Msg = "编码不可为空"; _Result.Data = ""; return(Json(_Result)); } //IPAddress ipaddress; //if (!IPAddress.TryParse(ip, out ipaddress)) //{ // _Result.Code = "510"; // _Result.Msg = "IP不合法"; // _Result.Data = ""; // return Json(_Result); //} int count = dbContext.Device.Where(i => i.Code == code).Count(); if (count <= 0) { _Result.Code = "1"; _Result.Msg = "未找到编码为:" + code + "的设备"; _Result.Data = ""; return(Json(_Result)); } AssetFile assetfile = new AssetFile(); //文件名 var GUID = Guid.NewGuid(); long filesize = HttpContext.Request.ContentLength.Value - _HeadLen; //文件类型 var ext = filename.Split('.').Last(); FileTypeJudgment ftj = new FileTypeJudgment() { TypeTarget = new TypeImg() }; //if (Method.ImgType.Contains(ext)) //{ // //图片文件 // assetfile.FileType = "图片"; //} if (ftj.Judge(ext)) { //图片文件 assetfile.FileType = "图片"; } else { _Result.Code = "510"; _Result.Msg = "不是合法的文件类型"; _Result.Data = ""; return(Json(_Result)); } //文件保存路径 var _FolderPath = @"\Files" + @"\" + GUID; string path = Method._hostingEnvironment.WebRootPath + _FolderPath; if (Directory.Exists(path) == false)//如果不存在就创建file文件夹 { Directory.CreateDirectory(path); } //文件全路径 var filepath = Method._hostingEnvironment.WebRootPath + _FolderPath + @"\" + filename; using (FileStream fs = System.IO.File.Create(filepath)) { fs.Write(byteArray, _HeadLen, byteArray.Length - _HeadLen); fs.Flush(); fs.Dispose(); } #region 文件上传到OSS服务器并删除本地存档 var prjinfo = dbContext.ProjectInfo.FirstOrDefault(); FileStream fileFacestream = new FileStream(filepath, FileMode.Open); byte[] btFace = new byte[fileFacestream.Length]; //调用read读取方法 fileFacestream.Read(btFace, 0, btFace.Length); fileFacestream.Close(); string faceImg = Convert.ToBase64String(btFace); qm.WriteLogToFile("截图", "准备上传"); var filedata = new { FileName = filename, FileStr = faceImg, MallCode = prjinfo.CusID }; var param = JsonHelper.SerializeJSON(filedata); var _r = Method.PostMoths(Method.FileServer + "/FileManage/UpLoadScreenshotFiles", param); qm.WriteLogToFile("截图", _r); QianMuResult qianMuResult = new QianMuResult(); qianMuResult = (QianMuResult)Newtonsoft.Json.JsonConvert.DeserializeObject(_r, qianMuResult.GetType()); if (qianMuResult.Code != "200") { _Result.Code = "2"; _Result.Msg = "上传文件到OSS失败"; _Result.Data = ""; return(Json(_Result)); } // MemoryStream majorfs = new MemoryStream(); // majorfs.Write(byteArray, _HeadLen, byteArray.Length - _HeadLen); //// file.CopyTo(majorfs); //var majorfs = FileHelper.FileToStream(filepath); //AliyunOSS aliyunOSS = new AliyunOSS(); //if (!aliyunOSS.UploadFileToOSS("Files" + "/" + assetfile.Code + "/" + assetfile.FileName + "." + assetfile.FileExtName, majorfs)) //{ // _Result.Code = "2"; // _Result.Msg = "上传文件到OSS失败"; // _Result.Data = ""; // return Json(_Result); //} #endregion //添加文件到数据库 assetfile.AddTime = DateTime.Now; assetfile.FileExtName = ext; //assetfile.Code = GUID.ToString(); assetfile.Code = qianMuResult.Data.ToString(); assetfile.FileHash = ""; assetfile.FileName = filename.Split('.').First(); //assetfile.FilePath = @"\Files" + @"\" + GUID.ToString() + @"\" + filename; assetfile.FilePath = @"\Files" + @"\" + qianMuResult.Data.ToString() + @"\" + filename; assetfile.FileSize = filesize; dbContext.AssetFiles.Add(assetfile); //更新截图信息到设备 var dev = await dbContext.Device.Where(i => i.Code == code).FirstOrDefaultAsync(); dev.ScreenshotSrc = assetfile.FilePath; if (dbContext.SaveChanges() > 0) { Output_FileInfo of = new Output_FileInfo(); of.FilePath = assetfile.FilePath; // of.ID = assetfile.ID; of.Code = assetfile.Code; _Result.Code = "200"; _Result.Msg = "文件已被上传完成,并加入数据库"; _Result.Data = of; } else { _Result.Code = "2"; _Result.Msg = "添加文件到数据库失败"; _Result.Data = ""; } } catch (Exception e) { qm.WriteLogToFile("", e.ToString()); _Result.Code = "500"; _Result.Msg = "程序运行错误"; _Result.Data = ""; } return(Json(_Result)); }
public async Task <IActionResult> FloorEdit(Input_FloorEdit model, [FromServices] ContextString dbContext) { QianMuResult _Result = new QianMuResult(); Stream stream = HttpContext.Request.Body; byte[] buffer = new byte[HttpContext.Request.ContentLength.Value]; stream.Read(buffer, 0, buffer.Length); string inputStr = Encoding.UTF8.GetString(buffer); model = (Input_FloorEdit)Newtonsoft.Json.JsonConvert.DeserializeObject(inputStr, model.GetType()); if (string.IsNullOrEmpty(model.UserName)) { //检测用户登录情况 var uol = Method.GetLoginUserName(dbContext, this.HttpContext); if (string.IsNullOrEmpty(uol.UserName)) { _Result.Code = "401"; _Result.Msg = "请登陆后再进行操作"; _Result.Data = ""; return(Json(_Result)); } else { model.UserName = uol.UserName; } } //if (string.IsNullOrEmpty(model.Code) || string.IsNullOrEmpty(model.Code)) if (string.IsNullOrEmpty(model.Code)) { _Result.Code = "510"; _Result.Msg = "请输入一个楼层编码"; _Result.Data = ""; return(Json(_Result)); } if (string.IsNullOrEmpty(model.Name)) { _Result.Code = "510"; _Result.Msg = "楼层名称不可为空"; _Result.Data = ""; return(Json(_Result)); } var floor = await dbContext.Floor.Where(i => i.Code == model.Code && !i.IsDel).FirstOrDefaultAsync(); if (floor == null) { _Result.Code = "510"; _Result.Msg = "楼层不存在"; _Result.Data = ""; return(Json(_Result)); } if (!string.IsNullOrEmpty(model.Code)) { var file = await dbContext.AssetFiles.Where(i => i.Code == model.Code).FirstOrDefaultAsync(); if (file == null) { _Result.Code = "510"; _Result.Msg = "无效的文件ID"; _Result.Data = ""; return(Json(_Result)); } FileTypeJudgment fimg = new FileTypeJudgment() { TypeTarget = new TypeImg() }; if (!fimg.Judge(file.FileExtName)) { _Result.Code = "510"; _Result.Msg = "地图文件不是图片"; _Result.Data = ""; return(Json(_Result)); } floor.Map = model.Code; } floor.Name = model.Name; floor.UpdateTime = DateTime.Now; dbContext.Floor.Update(floor); if (await dbContext.SaveChangesAsync() > 0) { _Result.Code = "200"; _Result.Msg = "修改成功"; _Result.Data = ""; var ip = Method.GetUserIp(this.HttpContext); dbContext.SysLog.Add(new SysLog { AccountName = model.UserName, ModuleName = "楼层管理", LogMsg = model.UserName + "修改了名称:" + model.Name + "的楼层地图", AddTime = DateTime.Now, Code = Guid.NewGuid().ToString(), Type = "修改", IP = ip }); dbContext.SaveChanges(); } else { _Result.Code = "1"; _Result.Msg = "修改失败"; _Result.Data = ""; } return(Json(_Result)); }