// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env, IApplicationLifetime lifetime) { app.UseAuthentication(); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseStaticFiles(); app.UseCors("default"); app.UseMvc(); var confRegisterConsul = ConfigHelper.ReadConfigByName("IsRegisterConsul", ""); var IsRegisterConsul = false; Boolean.TryParse(confRegisterConsul, out IsRegisterConsul); //注册服务 if (IsRegisterConsul) { ServiceContract serviceEntity = new ServiceContract { IP = Configuration["Service:Ip"], Port = Convert.ToInt32(Configuration["Service:Port"]), ServiceName = Configuration["Service:Name"], ConsulIP = Configuration["Consul:IP"], ConsulPort = Convert.ToInt32(Configuration["Consul:Port"]) }; ConsulCommon.RegisterConsul(app, lifetime, serviceEntity); } string KafkaUploadTopic = ConfigHelper.ReadConfigByName("KafkaUploadTopic"); string KafkaMsgTopic = ConfigHelper.ReadConfigByName("KafkaMsgTopic"); UploadLogic uploadLogic = new UploadLogic(); //总署订阅消息 KafKaLogic.GetInstance().Pull((KafKaContract, topic) => { if (topic == KafkaUploadTopic) //总署订阅消息 { Task.Run(() => { uploadLogic.PullUploadMsg(KafKaContract); }); } else if (topic == KafkaMsgTopic) //隶属关订阅消息 { Task.Run(() => { uploadLogic.PullMsg(KafKaContract); }); } }); var model = new UploadContract(); model.InsertTime = DateTime.Now; var str = SerializeHelper.serializeToString(model); LogHelper.logInfo(str); //定时任务 QuartzLogic quartz = new QuartzLogic(); var cron = ConfigHelper.ReadConfigByName("QuartzTime"); quartz.ExecuteByCron <MyJobLogic>(cron); }
public async Task <ResultContract <string> > UploadFile(BaseUploadContract data) { var result = new ResultContract <string>() { Code = 0, Msg = "上传成功" }; try { //验证参数 var orgInfo = new OrganizationContract(); this.CheckParameter(data, ref result, ref orgInfo); if (result.Code == -1) { return(result); } List <UploadContract> fileList = new List <UploadContract>(); var files = Request.Form.Files; var groupId = Guid.NewGuid().ToString(); int order = 1; foreach (var file in files) { var fileModel = new UploadContract() { UserId = data.UserId, OrgId = data.OrgId, AppId = data.AppId, Tags = data.Tags, UploadTime = DateTime.Now, DisplayName = data.DisplayName, Remark = data.Remark, OrgName = orgInfo.OrganizationName, Order = order, ThemeType = data.ThemeType }; //分组id fileModel.GroupId = groupId; var fileData = new MultipartFormDataContent(); //判断文件夹是否存在 if (!Directory.Exists(uploadFilePath)) { Directory.CreateDirectory(uploadFilePath); } var imgPath = AppDomain.CurrentDomain.BaseDirectory + ConfigHelper.ReadConfigByName("ImgsPath"); if (!Directory.Exists(imgPath)) { Directory.CreateDirectory(imgPath); } fileModel.FileName = file.FileName; var lastName = file.FileName.Substring(file.FileName.LastIndexOf(".") + 1, (file.FileName.Length - file.FileName.LastIndexOf(".") - 1)); //扩展名 fileModel.FileId = Guid.NewGuid(); fileModel.NewFileName = fileModel.FileId + "." + lastName; var fileLocalFullName = uploadFilePath + Path.DirectorySeparatorChar + fileModel.NewFileName; var stream = file.OpenReadStream(); //文件保存到本地 double fileSize = 0; //保存文件 FileHelper.SavaFile(fileLocalFullName, stream, ref fileSize); //文件上传成功 修改model fileModel.IsUpload = false; fileModel.Url = fileLocalFullName; fileModel.FileType = lastName; //组织名称。后期加上 //判断文件大小 double uploadLimitSize = 0; double.TryParse(ConfigHelper.ReadConfigByName("UploadLimitSizeM"), out uploadLimitSize); //如果是视频截取封面 if (CommonDictionary.GetInstance().VideoType.Count(d => d.ToLower() == lastName.ToLower()) > 0) { var thumbnailPath = AliyunOSSHepler.GetInstance().GetPicFromVideo(fileLocalFullName, imgPath + Path.DirectorySeparatorChar + fileModel.FileId + ".jpg", "1"); var thumbnailUrl = ""; var isUpload = AliyunOSSHepler.GetInstance().UploadFiles(imgPath, fileModel.FileId + ".jpg", ref thumbnailUrl, true); fileModel.ThumbnailUrl = thumbnailPath; if (isUpload && !string.IsNullOrWhiteSpace(thumbnailUrl)) { fileModel.ThumbnailUrl = thumbnailUrl; } else { fileModel.IsFailure = true; this._uploadHandService.SavaTagsFile(fileModel); //把文件 移动到错误文件 文件夹 System.IO.File.Move(uploadFilePath + Path.DirectorySeparatorChar + fileModel.NewFileName, FailurePath + Path.DirectorySeparatorChar + fileModel.NewFileName); result.Code = -1; result.Msg = "截图失败"; return(result); } } //如果断网把标签和文件都存到本地 if (!CommonDictionary.GetInstance().KafkaIsOnline) { this._uploadHandService.SavaTagsFile(fileModel); } else { //如果文件大小比预设大小 小 直接上云 if (fileSize < uploadLimitSize) { var url = ""; fileModel.IsUpload = AliyunOSSHepler.GetInstance().UploadFiles(uploadFilePath, fileModel.NewFileName, ref url, false); //如果上传失败 标签存本地 if (!fileModel.IsUpload) { fileModel.IsFailure = true; this._uploadHandService.SavaTagsFile(fileModel); //把文件 移动到错误文件 文件夹 System.IO.File.Move(uploadFilePath + Path.DirectorySeparatorChar + fileModel.NewFileName, FailurePath + Path.DirectorySeparatorChar + fileModel.NewFileName); } else { fileModel.Url = url; } } fileList.Add(fileModel); order++; } } ////把标签 推送到总署 KafKaContract kafkaModel = new KafKaContract(); if (fileList.Count > 1) //批量添加 { kafkaModel.MsgCode = KafkaMsgCodeEnum.AddList; kafkaModel.Msg = SerializeHelper.serializeToString(fileList); KafKaLogic.GetInstance().Push(kafkaModel, KafkaTopic); } else if (fileList.Count() == 1) //单个文件添加 { kafkaModel.MsgCode = KafkaMsgCodeEnum.Add; fileList[0].GroupId = Guid.NewGuid().ToString(); kafkaModel.Msg = SerializeHelper.serializeToString(fileList[0]); KafKaLogic.GetInstance().Push(kafkaModel, KafkaTopic); } } catch (Exception e) { LogHelper.logError("上传文件失败:" + e.StackTrace); result.Code = -1; result.Msg = e.Message; } return(result); }