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();
            }
        }
  • 相关阅读:
    一台电脑上的git同时使用两个github账户
    git自己操作命令组集合
    git基本原理
    js如何遍历表单所有控件
    js如何访问表单(四种方法)(博客园+li的方式去掉p标签)
    js如何操作表格(常用属性方法汇总)
    php数学和时间常用函数有哪些(总结表)(看学习视频效率挺高的)(复习)
    swift 笔记 (十九) —— 协议
    ecshop广告调用方法
    K60 启动过程分析
  • 原文地址:https://www.cnblogs.com/xingbinggong/p/3195951.html
Copyright © 2011-2022 走看看