using System; using System.Collections.Generic; using System.Configuration; using System.IO; using System.Linq; using System.Text; namespace BLL { /// <summary> /// 上传附件相关 /// </summary> public class UploadFileService { #region 附件上传 /// <summary> /// 附件上传 /// </summary> /// <param name="fileUpload">上传控件</param> /// <param name="fileUrl">上传路径</param> /// <param name="constUrl">定义路径</param> /// <returns></returns> public static string UploadAttachment(string rootPath, FineUIPro.FileUpload fileUpload, string fileUrl, string constUrl) { if (!string.IsNullOrEmpty(fileUrl)) ////是否存在附件 存在则删除 { string urlFullPath = rootPath + fileUrl; if (File.Exists(urlFullPath)) { File.Delete(urlFullPath); } } string initFullPath = rootPath + constUrl; if (!Directory.Exists(initFullPath)) { Directory.CreateDirectory(initFullPath); } string filePath = fileUpload.PostedFile.FileName; string fileName = Funs.GetNewFileName() + "~" + Path.GetFileName(filePath); int count = fileUpload.PostedFile.ContentLength; string savePath = constUrl + fileName; string fullPath = initFullPath + fileName; if (!File.Exists(fullPath)) { byte[] buffer = new byte[count]; Stream stream = fileUpload.PostedFile.InputStream; stream.Read(buffer, 0, count); MemoryStream memoryStream = new MemoryStream(buffer); FileStream fs = new FileStream(fullPath, FileMode.Create, FileAccess.Write); memoryStream.WriteTo(fs); memoryStream.Flush(); memoryStream.Close(); fs.Flush(); fs.Close(); memoryStream = null; fs = null; //if (!string.IsNullOrEmpty(fileUrl)) //{ // fileUrl += "," + savePath; //} //else //{ // fileUrl += savePath; //} fileUrl = savePath; } else { fileUrl = string.Empty; } return fileUrl; } #endregion #region 附件资源删除 /// <summary> /// 附件资源删除 /// </summary> /// <param name="rootPath"></param> /// <param name="fileUrl"></param> public static void DeleteFile(string rootPath, string fileUrl) { if (!string.IsNullOrEmpty(fileUrl)) { string[] strs = fileUrl.Trim().Split(','); foreach (var item in strs) { string urlFullPath = rootPath + item; if (File.Exists(urlFullPath)) { File.Delete(urlFullPath); } } } } #endregion #region 上传文件路径 /// <summary> /// 用户-附件路径 /// </summary> public static string UserFilePath = "FileUpload\\User\\"; /// <summary> /// 安全组织体系 /// </summary> public const string HSSEOrganizeFilePath = "FileUpload\\HSSEOrganize\\"; /// <summary> /// 安全管理机构-附件路径 /// </summary> public const string HSSEManageFilePath = "FileUpload\\HSSEManage\\"; /// <summary> /// 标准规范-附件路径 /// </summary> public static string HSSEStandardsListFilePath = "FileUpload\\HSSEStandardsList\\"; /// <summary> ///法律法规-附件路径 /// </summary> public static string LawRegulationFilePath = "FileUpload\\LawRegulation\\"; /// <summary> /// 管理规定-附件路径 /// </summary> public static string ManageRuleFilePath = "FileUpload\\ManageRule\\"; /// <summary> /// 生产管理规章制度-附件路径 /// </summary> public static string RulesRegulationsFilePath = "FileUpload\\RulesRegulations\\"; /// <summary> /// 二维码上传路径 /// </summary> public const string QRCodeImageFilePath = "FileUpload\\QRCodeFile\\"; /// <summary> /// 培训教材库-附件路径 /// </summary> public static string TrainingFilePath = "FileUpload\\Training\\"; /// <summary> /// 事故案例库-附件路径 /// </summary> public static string AccidentCaseFilePath = "FileUpload\\AccidentCase\\"; /// <summary> /// HAZOP-附件路径 /// </summary> public static string HAZOPFilePath = "FileUpload\\HAZOP\\"; /// <summary> /// 安全试题库-附件路径 /// </summary> public static string TrainTestDBFilePath = "FileUpload\\TrainTestDB\\"; /// <summary> /// 安全专家-附件路径 /// </summary> public static string ExpertFilePath = "FileUpload\\Expert\\"; /// <summary> /// 应急预案-附件路径 /// </summary> public const string EmergencyFilePath = "FileUpload\\Emergency\\"; /// <summary> /// 安全评价 /// </summary> public const string AppraiseFilePath = "FileUpload\\Appraise\\"; /// <summary> /// 专项方案-附件路径 /// </summary> public const string SpecialSchemeFilePath = "FileUpload\\SpecialScheme\\"; /// <summary> /// 安全监督检查报告-附件路径 /// </summary> public static string SuperviseCheckReportFilePath = "FileUpload\\SuperviseCheckReport\\"; /// <summary> /// 安全生产快报-附件路径 /// </summary> public static string SafeProductionExpressFilePath = "FileUpload\\SafeProductionExpress\\"; /// <summary> /// 安全交流-附件路径 /// </summary> public static string ExchangeFilePath = "FileUpload\\Exchange\\"; /// <summary> /// 安全生产数据季报-附件路径 /// </summary> public static string SafetyQuarterlyReportFilePath = "FileUpload\\SafetyQuarterlyReport\\"; /// <summary> /// 在线督查 /// </summary> public const string OnLineSupervisionFilePath = "FileUpload\\OnLineSupervision\\"; /// <summary> /// 项目评价 /// </summary> public const string ProjectEvaluationFilePath = "FileUpload\\ProjectEvaluation\\"; /// <summary> /// 事故快报 /// </summary> public const string ProjectAccidentFilePath = "FileUpload\\ProjectAccident\\"; /// <summary> /// 评价报告 /// </summary> public const string SubUnitCheckRectifyFilePath = "FileUpload\\SubUnitCheckRectify\\"; /// <summary> /// 企业安全文件上报 /// </summary> public const string SubUnitReportFilePath = "FileUpload\\SubUnitReport\\"; /// <summary> /// 隐患整改通知单附件路径 /// </summary> public const string RectifyNoticeFilePath = "FileUpload\\RectifyNotice\\"; /// <summary> /// 工程暂停令附件路径 /// </summary> public const string PauseNoticeFilePath = "FileUpload\\PauseNotice\\"; /// <summary> /// 危险观察登记-附件路径 /// </summary> public static string RegistrationFilePath = "FileUpload\\Registration\\"; /// <summary> /// 分包方绩效评价-附件路径 /// </summary> public static string PerfomanceRecordFilePath = "FileUpload\\PerfomanceRecord\\"; /// <summary> /// 个人绩效评价-附件路径 /// </summary> public static string PersonPerfomanceFilePath = "FileUpload\\PersonPerfomance\\"; /// <summary> /// 奖励通知单-附件路径 /// </summary> public const string IncentiveNoticeFilePath = "FileUpload\\IncentiveNotice\\"; /// <summary> /// 处罚通知单-附件路径 /// </summary> public const string PunishNoticeFilePath = "FileUpload\\PunishNotice\\"; /// <summary> /// 获奖证书或奖杯--附件路径 /// </summary> public const string HSECertificateFilePath = "FileUpload\\HSECertificate\\"; /// <summary> /// 安全专职人员名单附件 /// </summary> public const string FullTimeManFilePath = "FileUpload\\FullTimeMan\\"; /// <summary> /// 项目经理人员名单附件 /// </summary> public const string PMManFilePath = "FileUpload\\PMMan\\"; #region 分包商资质 /// <summary> /// 营业执照扫描件-附件路径 /// </summary> public const string BL_ScanUrlFilePath = "FileUpload\\BL_ScanUrl\\"; /// <summary> /// 机构代码扫描件-附件路径 /// </summary> public const string O_ScanUrlFilePath = "FileUpload\\O_ScanUrl\\"; /// <summary> /// 资质证书扫描件-附件路径 /// </summary> public const string C_ScanUrlFilePath = "FileUpload\\C_ScanUrl\\"; /// <summary> /// 质量体系认证证书扫描件-附件路径 /// </summary> public const string QL_ScanUrlFilePath = "FileUpload\\QL_ScanUrl\\"; /// <summary> /// HSE体系认证证书扫描件-附件路径 /// </summary> public const string H_ScanUrlFilePath = "FileUpload\\H_ScanUrl\\"; /// <summary> /// HSE体系认证证书扫描件-附件路径 /// </summary> public const string H_ScanUrl2FilePath = "FileUpload\\H_ScanUrl2\\"; /// <summary> /// 安全生产许可证扫描件-附件路径 /// </summary> public const string SL_ScanUrlFilePath = "FileUpload\\SL_ScanUrl\\"; #endregion #region 采购供货厂家管理 /// <summary> // 培训记录-附件路径 /// </summary> public const string TrainRecordsUrlFilePath = "FileUpload\\TrainRecordsUrl\\"; /// <summary> /// 方案及资质审查-附件路径 /// </summary> public const string PlanUrlFilePath = "FileUpload\\PlanUrl\\"; /// <summary> /// 临时到场人员培训-附件路径 /// </summary> public const string TemporaryPersonUrlFilePath = "FileUpload\\TemporaryPersonUrl\\"; /// <summary> /// 厂家入场安全人员培训-附件路径 /// </summary> public const string InPersonTrainUrlFilePath = "FileUpload\\InPersonTrainUrl\\"; /// <summary> /// HSE协议-附件路径 /// </summary> public const string HSEAgreementUrlFilePath = "FileUpload\\HSEAgreementUrl\\"; #endregion #endregion /// <summary> /// 保存附件 /// </summary> /// <param name="source"></param> /// <param name="attachUrl"></param> /// <param name="menuId"></param> /// <param name="toKeyId"></param> public static void SaveAttachUrl(string source, string attachUrl,string menuId,string toKeyId) { string rootUrl = ConfigurationManager.AppSettings["localRoot"]; if (string.IsNullOrEmpty(rootUrl)) { rootUrl = Funs.RootPath; } List<Model.AttachFile> sour = (from x in Funs.DB.AttachFile where x.MenuId == menuId && x.ToKeyId == toKeyId select x).ToList(); if (sour.Count() == 0) { Model.AttachFile att = new Model.AttachFile { AttachFileId = SQLHelper.GetNewID(), ToKeyId = toKeyId, AttachSource = source.ToString(), AttachUrl = attachUrl, MenuId = menuId, // ImageByte= imageByte, //AttachPath= attachPath, }; if (menuId == BLL.Const.PersonListMenuId) { att.ImageByte = AttachFileService.SetImageToByteArray(rootUrl + attachUrl.Split(',')[0]); } Funs.DB.AttachFile.InsertOnSubmit(att); Funs.DB.SubmitChanges(); } else { Model.AttachFile att = Funs.DB.AttachFile.FirstOrDefault(x => x.MenuId == menuId && x.AttachFileId == sour.First().AttachFileId); if (att != null) { att.ToKeyId = toKeyId; att.AttachSource = source.ToString(); att.AttachUrl = attachUrl; att.MenuId = menuId; if (menuId == BLL.Const.PersonListMenuId) { att.ImageByte = AttachFileService.SetImageToByteArray(rootUrl + attachUrl.Split(',')[0]); } Funs.DB.SubmitChanges(); } } } public static void SaveAttachUrlForApi(string source, string attachUrl, string menuId, string toKeyId) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { string rootUrl = ConfigurationManager.AppSettings["localRoot"]; if (string.IsNullOrEmpty(rootUrl)) { rootUrl = Funs.RootPath; } List<Model.AttachFile> sour = (from x in db.AttachFile where x.MenuId == menuId && x.ToKeyId == toKeyId select x).ToList(); if (sour.Count() == 0) { Model.AttachFile att = new Model.AttachFile { AttachFileId = SQLHelper.GetNewID(), ToKeyId = toKeyId, AttachSource = source.ToString(), AttachUrl = attachUrl, MenuId = menuId, // ImageByte= imageByte, //AttachPath= attachPath, }; if (menuId == BLL.Const.PersonListMenuId) { att.ImageByte = AttachFileService.SetImageToByteArray(rootUrl + attachUrl.Split(',')[0]); } db.AttachFile.InsertOnSubmit(att); db.SubmitChanges(); } else { Model.AttachFile att = db.AttachFile.FirstOrDefault(x => x.MenuId == menuId && x.AttachFileId == sour.First().AttachFileId); if (att != null) { att.ToKeyId = toKeyId; att.AttachSource = source.ToString(); att.AttachUrl = attachUrl; att.MenuId = menuId; if (menuId == BLL.Const.PersonListMenuId) { att.ImageByte = AttachFileService.SetImageToByteArray(rootUrl + attachUrl.Split(',')[0]); } db.SubmitChanges(); } } } } /// <summary> /// 通过附件路径得到Source /// </summary> /// <param name="url"></param> /// <returns></returns> public static string GetSourceByAttachUrl(string attachUrl, int size, string oldSrouce) { string attachSource = string.Empty; if (!string.IsNullOrEmpty(attachUrl)) { attachUrl= attachUrl.Replace('/', '\\'); var allUrl = Funs.GetStrListByStr(attachUrl, ','); foreach (var item in allUrl) { int strInt = item.LastIndexOf("~"); if (strInt < 0) { strInt = item.LastIndexOf("\\"); } string folder = item.Substring(0,strInt + 1).Replace('\\', '/'); string name = item.Substring(strInt + 1); string type = item.Substring(item.LastIndexOf(".") + 1); string savedName = item.Substring(item.LastIndexOf("\\") + 1); string id = SQLHelper.GetNewID(typeof(Model.AttachFile)); attachSource += "{ \"name\": \"" + name + "\", \"folder\": \"" + folder + "\", \"type\": \"" + type + "\", \"savedName\": \"" + savedName + "\", \"size\": " + size + ", \"id\": \"" + SQLHelper.GetNewID(typeof(Model.AttachFile)) + "\" }@"; } attachSource = attachSource.Substring(0, attachSource.LastIndexOf("@")).Replace("@", ","); if (!string.IsNullOrEmpty(oldSrouce)) { attachSource = oldSrouce.Replace("]", ",") + attachSource + "]"; } else { attachSource = "[" + attachSource + "]"; } } return attachSource; } ////将虚拟路径转化为文件的路径然后最后转化为文件流 //public static ActionResult SaveImage(string path) //{ // var url = System.Web.HttpContext.Current.Request.PhysicalApplicationPath + path; // FileStream fs = new FileStream(url, FileMode.Open, FileAccess.Read); //将图片以文件流的形式进行保存 // BinaryReader br = new BinaryReader(fs); // byte[] imgBytesIn = br.ReadBytes((int)fs.Length); //将流读入到字节数组中 // Encoding myEncoding = Encoding.GetEncoding("utf-8"); // string stImageByte = Convert.ToBase64String(imgBytesIn); // return Json(stImageByte); //} } }