文件操作帮助类:
////// 对文件上传操作的帮助类 /// public class FileManager { ////// 上传文件目录名称 /// private static string FileFolder = ConfigurationSettings.AppSettings["UploadFolder"]; ////// 上传文件基础目录 /// private static string BaseFolder = HttpContext.Current.Server.MapPath("~/"+FileFolder); ////// 根网站 /// private static string RootSite = ConfigurationSettings.AppSettings["RootSite"]; ////// 文件基础路径 /// public static string FileBaseUrl = RootSite + "/" + FileFolder + "/"; ////// 上传文件 /// /// ///文件上传后的url public static string UploadFile(HttpPostedFileBase file) { string extension = Path.GetExtension(file.FileName); if(string.IsNullOrEmpty(extension)) { return string.Empty; } string childFolder = extension.Substring(1); string folderName = Path.Combine(BaseFolder, childFolder); CreateFile(folderName); string fileName=Guid.NewGuid() + extension; string fileFullName = Path.Combine(folderName, fileName); CreateFileStream(fileFullName,file); return childFolder + "/" + fileName; } ////// /// /// /// public static void CreateFileStream(string fileFullName, HttpPostedFileBase file) { using (FileStream fs = new FileStream(fileFullName, FileMode.OpenOrCreate)) { byte[] buffer = new byte[file.ContentLength]; file.InputStream.Read(buffer, 0, file.ContentLength); fs.Write(buffer, 0, file.ContentLength); fs.Flush(); fs.Close(); } } ////// 创建对象 /// /// public static void CreateFile(string folderName) { DirectoryInfo di = new DirectoryInfo(folderName); if (!di.Exists) { di.Create(); } } ////// 删除文件 /// /// UploadFile返回的字符串 public static void DeleteFile(string fileRelativePath) { if (string.IsNullOrEmpty(fileRelativePath )) { return; } string fileName = Path.Combine(BaseFolder, fileRelativePath); FileInfo fi = new FileInfo(fileName); if (fi.Exists) { fi.Delete(); } } ////// 下载文件 /// /// 文件相对路径 public static void DownLoadFile(string fileRelativePath) { string fileName = fileRelativePath.Substring(fileRelativePath.LastIndexOf('/')); string filePath = Path.Combine(BaseFolder, fileRelativePath); //将FileInfo类使用改为File类,将using()作用范围去除,因为与fs.close()重复 if (!System.IO.File.Exists(filePath)) { return; } FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate); int streamLength = (int)fs.Length; byte[] buffer = new byte[streamLength]; fs.Read(buffer, 0, streamLength); HttpContext.Current.Response.ContentType = "application/octet-stream"; HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename="+fileName+";"); ////attachment --- 作为附件下载 ////inline --- 在线打开 HttpContext.Current.Response.AddHeader("Content-Length", streamLength.ToString()); HttpContext.Current.Response.BinaryWrite(buffer); fs.Close(); HttpContext.Current.Response.Flush(); HttpContext.Current.Response.End(); } }