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();
            }
        }
  • 相关阅读:
    Mybatis 传入的参数为List
    IDEA 自动清除不使用的 引用包
    java List去除重复数据
    oracle 导出数据库报错 EXP-00002: 写入导出文件时出错 EXP-00000: 导出终止失败
    Tomcat修改窗口名
    Oracle忘记密码找回
    3springboot执行原理及自动装配原理
    2springboot第一个程序
    springboot项目有红叉,但是没有运行没有报错。
    1springboot与微服务
  • 原文地址:https://www.cnblogs.com/xingbinggong/p/3195951.html
Copyright © 2011-2022 走看看