Example #1
0
        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));
        }
Example #2
0
        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));
        }