| 
									
										
										
										
											2021-12-02 10:44:15 +08:00
										 |  |  |  | using System; | 
					
						
							|  |  |  |  | using System.Collections.Generic; | 
					
						
							|  |  |  |  | using System.Linq; | 
					
						
							|  |  |  |  | using System.Text; | 
					
						
							|  |  |  |  | using System.Collections; | 
					
						
							|  |  |  |  | using System.IO; | 
					
						
							|  |  |  |  | using System.Web; | 
					
						
							| 
									
										
										
										
											2025-09-15 19:12:00 +08:00
										 |  |  |  | using System.Text.RegularExpressions; | 
					
						
							| 
									
										
										
										
											2025-09-18 11:26:22 +08:00
										 |  |  |  | using System.Net; | 
					
						
							| 
									
										
										
										
											2021-12-02 10:44:15 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | namespace BLL | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |     public static class FileInsertService | 
					
						
							|  |  |  |  |     { | 
					
						
							| 
									
										
										
										
											2025-09-18 11:26:22 +08:00
										 |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 获取服务器图片转byte | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         /// <param name="fileHost"></param> | 
					
						
							|  |  |  |  |         /// <param name="attachUrl"></param> | 
					
						
							|  |  |  |  |         /// <returns></returns> | 
					
						
							|  |  |  |  |         public static List<byte[]> FilePathTransStream(string fileHost, string attachUrl) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             List<byte[]> bytes = new List<byte[]>(); | 
					
						
							|  |  |  |  |             var strs = attachUrl.Trim().Split(','); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             try | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 foreach (var fileUrl in strs) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     string filepath = $"{fileHost}{fileUrl}"; | 
					
						
							|  |  |  |  |                     // 创建WebClient实例 | 
					
						
							|  |  |  |  |                     using (WebClient webClient = new WebClient()) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         // 下载图片并保存到内存流 | 
					
						
							|  |  |  |  |                         using (MemoryStream ms = new MemoryStream(webClient.DownloadData(filepath))) | 
					
						
							|  |  |  |  |                         { | 
					
						
							|  |  |  |  |                             // 将MemoryStream转换为byte数组 | 
					
						
							|  |  |  |  |                             byte[] imageBytes = ms.ToArray(); | 
					
						
							|  |  |  |  |                             bytes.Add(imageBytes); | 
					
						
							|  |  |  |  |                             //// 使用byte数组(例如,保存到文件或进行其他处理) | 
					
						
							|  |  |  |  |                             //File.WriteAllBytes("localImage.jpg", imageBytes); | 
					
						
							|  |  |  |  |                         } | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             catch (Exception ex) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 Console.WriteLine("Error: " + ex.Message); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             return bytes; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-02 10:44:15 +08:00
										 |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 获取附件数据流类 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         /// <param name="attachUrl">附件路径</param> | 
					
						
							|  |  |  |  |         /// <returns></returns> | 
					
						
							|  |  |  |  |         public static void FileInsert(List<byte[]> fileContextList, string attachUrl) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             if (fileContextList != null && fileContextList.Count > 0) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 string physicalpath = Funs.RootPath; | 
					
						
							|  |  |  |  |                 //HttpContext.Current.Request.PhysicalApplicationPath;     | 
					
						
							|  |  |  |  |                 string fullPath = physicalpath + attachUrl; | 
					
						
							|  |  |  |  |                 if (!File.Exists(fullPath)) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     byte[] fileContext = fileContextList[0]; | 
					
						
							|  |  |  |  |                     int index = fullPath.LastIndexOf("\\"); | 
					
						
							|  |  |  |  |                     string filePath = fullPath.Substring(0, index); | 
					
						
							|  |  |  |  |                     if (!Directory.Exists(filePath)) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         Directory.CreateDirectory(filePath); | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                     //string savePath = fullPath + fileName; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                     //文件读写模式 | 
					
						
							|  |  |  |  |                     System.IO.FileMode fileMode = System.IO.FileMode.Create; | 
					
						
							|  |  |  |  |                     //写入文件 | 
					
						
							|  |  |  |  |                     using (System.IO.FileStream fs = new System.IO.FileStream(fullPath, fileMode, System.IO.FileAccess.Write)) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         fs.Write(fileContext, 0, fileContext.Length); | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 获取多附件数据流类 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         /// <param name="attachUrl">附件路径</param> | 
					
						
							|  |  |  |  |         /// <returns></returns> | 
					
						
							|  |  |  |  |         public static void FileMoreInsert(List<byte[]> fileContextList, string attachUrl) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             if (fileContextList != null && fileContextList.Count() > 0) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 if (fileContextList.Count > 0) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     string[] strs = attachUrl.Trim().Split(','); | 
					
						
							|  |  |  |  |                     int i = 0; | 
					
						
							|  |  |  |  |                     foreach (var item in fileContextList) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         if (strs.Count() > i) | 
					
						
							|  |  |  |  |                         { | 
					
						
							|  |  |  |  |                             string physicalpath = Funs.RootPath; | 
					
						
							| 
									
										
										
										
											2025-09-15 19:12:00 +08:00
										 |  |  |  |                             string fpath = strs[i]; | 
					
						
							|  |  |  |  |                             string fullPath = physicalpath + fpath; | 
					
						
							| 
									
										
										
										
											2021-12-02 10:44:15 +08:00
										 |  |  |  |                             if (!File.Exists(fullPath)) | 
					
						
							|  |  |  |  |                             { | 
					
						
							|  |  |  |  |                                 byte[] fileContext = item; | 
					
						
							| 
									
										
										
										
											2025-09-15 19:12:00 +08:00
										 |  |  |  |                                 string fileName = Regex.Match(fullPath, @"[^/\\?]+(\?.*)?$").Value; | 
					
						
							|  |  |  |  |                                 string filePath = fullPath.Replace(fileName, ""); | 
					
						
							|  |  |  |  |                                 //int index = fullPath.LastIndexOf("\\"); | 
					
						
							|  |  |  |  |                                 //string filePath = fullPath.Substring(0, index) ; | 
					
						
							|  |  |  |  |                                 //string filePath = index > 0 ? fullPath.Substring(0, index) : fullPath; | 
					
						
							| 
									
										
										
										
											2021-12-02 10:44:15 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-09-15 19:12:00 +08:00
										 |  |  |  |                                 try | 
					
						
							|  |  |  |  |                                 { | 
					
						
							|  |  |  |  |                                     if (!Directory.Exists(filePath)) | 
					
						
							|  |  |  |  |                                     { | 
					
						
							|  |  |  |  |                                         Directory.CreateDirectory(filePath); | 
					
						
							|  |  |  |  |                                     } | 
					
						
							|  |  |  |  |                                 } | 
					
						
							|  |  |  |  |                                 catch (Exception ex) | 
					
						
							| 
									
										
										
										
											2021-12-02 10:44:15 +08:00
										 |  |  |  |                                 { | 
					
						
							| 
									
										
										
										
											2025-09-15 19:12:00 +08:00
										 |  |  |  |                                     ErrLogInfo.WriteLog($"附件【{filePath}】获取异常!"); | 
					
						
							|  |  |  |  |                                     //continue; | 
					
						
							| 
									
										
										
										
											2021-12-02 10:44:15 +08:00
										 |  |  |  |                                 } | 
					
						
							|  |  |  |  |                                 //string savePath = fullPath + fileName; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                                 //文件读写模式 | 
					
						
							|  |  |  |  |                                 System.IO.FileMode fileMode = System.IO.FileMode.Create; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                                 //写入文件 | 
					
						
							|  |  |  |  |                                 using (System.IO.FileStream fs = new System.IO.FileStream(fullPath, fileMode, System.IO.FileAccess.Write)) | 
					
						
							|  |  |  |  |                                 { | 
					
						
							|  |  |  |  |                                     fs.Write(fileContext, 0, fileContext.Length); | 
					
						
							|  |  |  |  |                                 } | 
					
						
							|  |  |  |  |                             } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                             i++; | 
					
						
							|  |  |  |  |                         } | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 数据和附件插入到多附件表 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         public static void InsertAttachFile(string attachFileId, string dataId, string attachSource, string attachUrl, List<byte[]> fileContext) | 
					
						
							|  |  |  |  |         { | 
					
						
							| 
									
										
										
										
											2021-12-07 18:42:00 +08:00
										 |  |  |  |             var getAtt = Funs.DB.AttachFile.FirstOrDefault(x => x.AttachFileId == attachFileId); | 
					
						
							|  |  |  |  |             if (getAtt != null) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 Funs.DB.AttachFile.DeleteOnSubmit(getAtt); | 
					
						
							|  |  |  |  |                 Funs.DB.SubmitChanges(); | 
					
						
							|  |  |  |  |             } | 
					
						
							| 
									
										
										
										
											2021-12-02 10:44:15 +08:00
										 |  |  |  |             //多附件 | 
					
						
							|  |  |  |  |             var attachFile = Funs.DB.AttachFile.FirstOrDefault(x => x.ToKeyId == dataId); | 
					
						
							|  |  |  |  |             if (attachFile == null && !string.IsNullOrEmpty(attachSource)) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 Model.AttachFile newAttachFile = new Model.AttachFile | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     AttachFileId = attachFileId, | 
					
						
							|  |  |  |  |                     ToKeyId = dataId, | 
					
						
							|  |  |  |  |                     AttachSource = attachSource, | 
					
						
							|  |  |  |  |                     AttachUrl = attachUrl | 
					
						
							|  |  |  |  |                 }; | 
					
						
							|  |  |  |  |                 Funs.DB.AttachFile.InsertOnSubmit(newAttachFile); | 
					
						
							|  |  |  |  |                 Funs.DB.SubmitChanges(); | 
					
						
							|  |  |  |  |                 ////插入附件文件 | 
					
						
							|  |  |  |  |                 BLL.FileInsertService.FileMoreInsert(fileContext, attachUrl); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             else | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 if (attachFile.AttachUrl != attachUrl) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     ///删除附件文件 | 
					
						
							|  |  |  |  |                     BLL.UploadAttachmentService.DeleteFile(Funs.RootPath, attachFile.AttachUrl); | 
					
						
							|  |  |  |  |                     ////插入附件文件 | 
					
						
							|  |  |  |  |                     BLL.FileInsertService.FileMoreInsert(fileContext, attachUrl); | 
					
						
							|  |  |  |  |                     attachFile.AttachSource = attachSource; | 
					
						
							|  |  |  |  |                     attachFile.AttachUrl = attachUrl; | 
					
						
							|  |  |  |  |                     Funs.DB.SubmitChanges(); | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |         } | 
					
						
							| 
									
										
										
										
											2025-09-18 11:26:22 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 数据和附件插入到多附件表【不存实际文件,只存地址】 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         public static void InsertAttachFileRecord(string attachFileId, string dataId, string attachSource, string attachUrl) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             var getAtt = Funs.DB.AttachFile.FirstOrDefault(x => x.AttachFileId == attachFileId); | 
					
						
							|  |  |  |  |             if (getAtt != null) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 Funs.DB.AttachFile.DeleteOnSubmit(getAtt); | 
					
						
							|  |  |  |  |                 Funs.DB.SubmitChanges(); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             //多附件 | 
					
						
							|  |  |  |  |             var attachFile = Funs.DB.AttachFile.FirstOrDefault(x => x.ToKeyId == dataId); | 
					
						
							|  |  |  |  |             if (attachFile == null && !string.IsNullOrEmpty(attachSource)) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 Model.AttachFile newAttachFile = new Model.AttachFile | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     AttachFileId = attachFileId, | 
					
						
							|  |  |  |  |                     ToKeyId = dataId, | 
					
						
							|  |  |  |  |                     AttachSource = attachSource, | 
					
						
							|  |  |  |  |                     AttachUrl = attachUrl | 
					
						
							|  |  |  |  |                 }; | 
					
						
							|  |  |  |  |                 Funs.DB.AttachFile.InsertOnSubmit(newAttachFile); | 
					
						
							|  |  |  |  |                 Funs.DB.SubmitChanges(); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             else | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 if (attachFile.AttachUrl != attachUrl) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     ///删除附件文件 | 
					
						
							|  |  |  |  |                     BLL.UploadAttachmentService.DeleteFile(Funs.RootPath, attachFile.AttachUrl); | 
					
						
							|  |  |  |  |                     attachFile.AttachSource = attachSource; | 
					
						
							|  |  |  |  |                     attachFile.AttachUrl = attachUrl; | 
					
						
							|  |  |  |  |                     Funs.DB.SubmitChanges(); | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-02 10:44:15 +08:00
										 |  |  |  |     } | 
					
						
							|  |  |  |  | } |