Esempio n. 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));
        }
Esempio n. 2
0
        public static QianMuResult PostMothsToObj(string url, string param)
        {
            QianMuResult _Result = new QianMuResult();
            string       strURL  = url;

            System.Net.HttpWebRequest request;
            request             = (System.Net.HttpWebRequest)WebRequest.Create(strURL);
            request.Method      = "POST";
            request.ContentType = "application/json;charset=UTF-8";
            string paraUrlCoded = param;

            byte[] payload;
            payload = System.Text.Encoding.UTF8.GetBytes(paraUrlCoded);
            request.ContentLength = payload.Length;
            Stream writer = request.GetRequestStream();

            writer.Write(payload, 0, payload.Length);
            writer.Close();
            System.Net.HttpWebResponse response;
            response = (System.Net.HttpWebResponse)request.GetResponse();
            System.IO.Stream s;
            s = response.GetResponseStream();
            string       StrDate  = "";
            string       strValue = "";
            StreamReader Reader   = new StreamReader(s, Encoding.UTF8);

            while ((StrDate = Reader.ReadLine()) != null)
            {
                strValue += StrDate;
                // strValue += StrDate + "\r\n";
            }

            var _r = (QianMuResult)Newtonsoft.Json.JsonConvert.DeserializeObject(strValue, _Result.GetType());

            return(_r);
        }