zoukankan      html  css  js  c++  java
  • 文件操作帮助类

    文件操作帮助类:

        /// <summary>
        /// 对文件上传操作的帮助类
        /// </summary>
        public class FileManager
        {
            /// <summary>
            /// 上传文件目录名称
            /// </summary>
            private static string FileFolder = ConfigurationSettings.AppSettings["UploadFolder"];
    
            /// <summary>
            /// 上传文件基础目录
            /// </summary>
            private static string BaseFolder = HttpContext.Current.Server.MapPath("~/"+FileFolder);
    
            /// <summary>
            /// 根网站
            /// </summary>
            private static string RootSite = ConfigurationSettings.AppSettings["RootSite"];
    
            /// <summary>
            /// 文件基础路径
            /// </summary>
            public static string FileBaseUrl = RootSite + "/" + FileFolder + "/";
    
            /// <summary>
            /// 上传文件
            /// </summary>
            /// <param name="file"></param>
            /// <returns>文件上传后的url</returns>
            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;
            }
    
            /// <summary>
            /// 
            /// </summary>
            /// <param name="fileFullName"></param>
            /// <param name="file"></param>
            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();
                }
            }
    
    
            /// <summary>
            /// 创建对象
            /// </summary>
            /// <param name="folderName"></param>
            public static void CreateFile(string folderName)
            {
                DirectoryInfo di = new DirectoryInfo(folderName);
                if (!di.Exists)
                {
                    di.Create();
                }
            }
    
    
    
            /// <summary>
            /// 删除文件
            /// </summary>
            /// <param name="fileRelativePath">UploadFile返回的字符串</param>
            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();
                }
            }
    
            /// <summary>
            /// 下载文件
            /// </summary>
            /// <param name="fileRelativePath">文件相对路径</param>
            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();
            }
        }
  • 相关阅读:
    21-MySQL-Ubuntu-快速回到SQL语句的行首和行末
    2- SQL语句的强化
    1-数据准备
    20-MySQL-Ubuntu-数据表的查询-子查询(九)
    19-MySQL-Ubuntu-数据表的查询-自关联(八)
    18-MySQL-Ubuntu-数据表的查询-连接(七)
    17-MySQL-Ubuntu-数据表的查询-分页(六)
    16-MySQL-Ubuntu-数据表的查询-分组与聚合(五)
    15-MySQL-Ubuntu-数据表的查询-聚合函数(四)
    14-MySQL-Ubuntu-数据表的查询-范围查询(三)
  • 原文地址:https://www.cnblogs.com/xingbinggong/p/3195951.html
Copyright © 2011-2022 走看看