/// <summary> /// 获取附件字节数组 /// </summary> /// <param name="saveMode"></param> /// <param name="fa"></param> /// <param name="DC"></param> /// <returns></returns> private static byte[] GetBytes(SaveFileModeEnum saveMode, FileAttachment fa, IDataContext DC) { byte[] data = null; switch (saveMode) { case SaveFileModeEnum.Local: if (!string.IsNullOrEmpty(fa.Path) && File.Exists(fa.Path)) { data = File.ReadAllBytes(fa.Path); } break; case SaveFileModeEnum.Database: data = DC.Set <FileAttachment>().Where(x => x.ID == fa.ID).Select(x => x.FileData).FirstOrDefault(); break; case SaveFileModeEnum.DFS: try { data = FDFSClient.DownloadFile(fa.GroupName, fa.Path.TrimStart('/')); } catch (FDFSException) { } break; } return(data); }
/// <summary> /// 根据定义的SaveFileModeEnum模式,获取File信息放入XSSFWorkbook中 /// </summary> /// <param name="xssfworkbook"></param> /// <param name="fa"></param> /// <param name="con"></param> /// <returns></returns> public static XSSFWorkbook GetXSSFWorkbook(XSSFWorkbook xssfworkbook, FileAttachment fa, Configs con) { var saveMode = fa.SaveFileMode == null ? con.FileUploadOptions.SaveFileMode : fa.SaveFileMode; if (saveMode == SaveFileModeEnum.Database) { using (MemoryStream ms = new MemoryStream(fa.FileData)) { xssfworkbook = new XSSFWorkbook(ms); } } if (saveMode == SaveFileModeEnum.Local) { using (FileStream file = new FileStream(fa.Path, FileMode.Open, FileAccess.Read)) { xssfworkbook = new XSSFWorkbook(file); } } if (saveMode == SaveFileModeEnum.DFS) { using (MemoryStream ms = new MemoryStream(FDFSClient.DownloadFile(fa.GroupName, fa.Path.TrimStart('/')))) { xssfworkbook = new XSSFWorkbook(ms); } } return(xssfworkbook); }
/// <summary> /// 上传文件并返回FileAttachmentVM(后台代码使用) /// </summary> /// <param name="vm"></param> /// <param name="FileData"></param> /// <param name="con"></param> /// <param name="FileName"></param> /// <param name="savePlace"></param> /// <param name="groupName"></param> /// <returns></returns> public static FileAttachmentVM GetFileByteForUpload(FileAttachmentVM vm, Stream FileData, Configs con, string FileName = null, SaveFileModeEnum?savePlace = null, string groupName = null) { savePlace = savePlace == null ? con.FileUploadOptions.SaveFileMode : savePlace; var ext = string.Empty; if (string.IsNullOrEmpty(FileName) == false) { var dotPos = FileName.LastIndexOf('.'); ext = FileName.Substring(dotPos + 1); } vm.Entity.FileName = FileName; vm.Entity.FileExt = ext; if (savePlace == SaveFileModeEnum.Database) { using (var dataStream = new MemoryStream()) { FileData.CopyTo(dataStream); vm.Entity.FileData = dataStream.ToArray(); } } else if (savePlace == SaveFileModeEnum.Local) { string pathHeader = con.FileUploadOptions.UploadDir; if (!Directory.Exists(pathHeader)) { Directory.CreateDirectory(pathHeader); } var fullPath = Path.Combine(con.FileUploadOptions.UploadDir, $"{Guid.NewGuid().ToNoSplitString()}.{vm.Entity.FileExt}"); using (var fileStream = File.Create(fullPath)) { FileData.CopyTo(fileStream); vm.Entity.Path = fullPath; vm.Entity.FileData = null; } } else if (savePlace == SaveFileModeEnum.DFS) { using (var dataStream = new MemoryStream()) { StorageNode node = null; FileData.CopyTo(dataStream); if (!string.IsNullOrEmpty(groupName)) { node = FDFSClient.GetStorageNode(groupName); } else { node = FDFSClient.GetStorageNode(); } if (node != null) { vm.Entity.Path = "/" + FDFSClient.UploadFile(node, dataStream.ToArray(), vm.Entity.FileExt); vm.Entity.GroupName = node.GroupName; } vm.Entity.FileData = null; } FileData.Dispose(); } return(vm); }