using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections; using System.IO; using System.Web; using System.Configuration; namespace BLL { public static class FileStructService { /// /// 获取附件数据流类 /// /// 附件路径 /// public static List GetFileStructByAttachUrl(string attachUrl) { List fileContext = new List(); if (!String.IsNullOrEmpty(attachUrl)) { string filePath = string.Empty; string physicalpath = Funs.RootPath; //HttpContext.Current.Request.PhysicalApplicationPath; filePath = physicalpath + attachUrl; if (File.Exists(filePath)) { FileInfo fileInfo = new FileInfo(filePath); Stream stream = fileInfo.OpenRead(); //读取指定大小的文件流内容到uploadFile.Context以便上传 int b; while (stream.Position > -1 && stream.Position < stream.Length) { if (stream.Length - stream.Position >= 20000000) { b = 20000000; } else { b = (int)(stream.Length - stream.Position); } byte[] filebyte = new byte[b]; stream.Read(filebyte, 0, b); fileContext.Add(filebyte); } stream.Close(); } } return fileContext; } /// /// 获取附件数据流类 多附件的情况 /// /// 附件路径 /// public static List GetMoreFileStructByAttachUrl(string attachUrl) { List fileContext = new List(); if (!String.IsNullOrEmpty(attachUrl)) { string[] strs = attachUrl.Trim().Split(','); foreach (var item in strs) { string filePath = string.Empty; string physicalpath = ConfigurationManager.AppSettings["localRoot"]; //HttpContext.Current.Request.PhysicalApplicationPath; filePath = physicalpath + item; if (File.Exists(filePath)) { fileContext.Add(fileConvertByte(item)); } } } return fileContext; } #region 二进制数据转换为附件 /// /// 二进制数据转换为附件 /// /// 二进制数据 /// 附件.后缀 /// 保存路径 /// 保存的相对路径 public static string ByteConvertFile(byte[] data, string fileName, string savePath) { string physicalpath = (ConfigurationManager.AppSettings["localRoot"] + "\\" + savePath).Replace("\\\\", "\\"); if (!System.IO.Directory.Exists(savePath)) { Directory.CreateDirectory(savePath); } savePath += fileName; FileStream fs; if (System.IO.File.Exists(savePath)) { fs = new FileStream(savePath, FileMode.Truncate); } else { fs = new FileStream(savePath, FileMode.CreateNew); } BinaryWriter br = new BinaryWriter(fs); br.Write(data, 0, data.Length); br.Close(); fs.Close(); return savePath; } #endregion #region 附件转换二进制数据(用于保存数据库) /// /// 附件转换二进制数据(用于保存数据库) /// /// 附件路径 /// 二进制 public static byte[] fileConvertByte(string filePath) { string physicalpath = (ConfigurationManager.AppSettings["localRoot"] + "\\" + filePath).Replace("\\\\", "\\"); byte[] bytContent = null; System.IO.FileStream fs = null; System.IO.BinaryReader br = null; try { fs = new FileStream(physicalpath, System.IO.FileMode.Open); } catch { } br = new BinaryReader((Stream)fs); bytContent = br.ReadBytes((Int32)fs.Length); fs.Dispose(); return bytContent; } #endregion } }