/// <summary> /// 验证参数 /// </summary> /// <param name="data"></param> /// <param name="result"></param> private void CheckParameter(BaseUploadContract data, ref ResultContract <string> result, ref OrganizationContract orgInfo) { //验证appid if (string.IsNullOrWhiteSpace(data.AppId) || !_uploadHandService.CheckAppId(data.AppId)) { result.Code = -1; result.Msg = "系统没有注册!"; } //验证组织机构id if (data.OrgId == null) { result.Code = -1; result.Msg = "请输入组织机构id!"; } orgInfo = _uploadHandService.CheckOrgInfo(data.OrgId.GetValueOrDefault()); if (orgInfo == null) { result.Code = -1; result.Msg = "组织机构输入错误!"; } //验证资源类型 if (data.ThemeType != ThemeTypeEnum.ThemeEvent.GetIntValue() && data.ThemeType != ThemeTypeEnum.ThemeResource.GetIntValue()) { result.Code = -1; result.Msg = "资源类型错误!"; } }
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); }