zoukankan      html  css  js  c++  java
  • 常用通用简单文件上传功能

      1 /// <summary>
      2     /// Web文件上传简单处理
      3     /// </summary>
      4     public class UploadFileHandler
      5     {
      6         private readonly HttpPostedFileBase _baseFile;
      7 
      8         public UploadFileHandler(HttpPostedFileBase baseFile)
      9         {
     10             if (_baseFile == null)
     11                 throw new ArgumentNullException("baseFile");
     12             _baseFile = baseFile;
     13         }
     14 
     15         /// <summary>
     16         /// 文件后缀验证
     17         /// </summary>
     18         /// <param name="regexp">例如:jpg|jpeg|bmp|gif</param>
     19         /// <returns>true:验证通过,false:格式不正确</returns>
     20         private bool VerifySuffix(string regexp)
     21         {
     22             if (regexp.IndexOf('|') == -1) throw new ArgumentException("验证文件类型表达式格式不正确");
     23             string regExp = string.Format(@"^.*?.({0})$", regexp);
     24             var suffix = GetFileSuffix();
     25             return !string.IsNullOrEmpty(suffix) && Regex.IsMatch(suffix, regExp);
     26         }
     27 
     28         /// <summary>
     29         /// 获取文件后缀名,包含"."
     30         /// </summary>
     31         /// <returns></returns>
     32         private string GetFileSuffix()
     33         {
     34             return Path.GetExtension(_baseFile.FileName);
     35         }
     36 
     37         /// <summary>
     38         /// 文件夹目录处理
     39         /// </summary>
     40         /// <param name="path"></param>
     41         private static void DirectoryProcess(string path)
     42         {
     43             if (!Directory.Exists(path)) Directory.CreateDirectory(path);
     44         }
     45 
     46         /// <summary>
     47         /// 保存上传文件,设置文件格式
     48         /// </summary>
     49         /// <param name="suffixs">例如:jpg|jpeg|bmp|gif </param>
     50         /// <returns></returns>
     51         public string Save(string suffixs)
     52         {
     53             return Save(null, null, null, suffixs);
     54         }
     55 
     56         /// <summary>
     57         /// 保存上传文件,设置上传文件名称
     58         /// 默认路径为System.IO.Directory.GetCurrentDirectory()
     59         /// </summary>
     60         /// <param name="getNameFunc">设置上传文件名称方法</param>
     61         public string Save(Func<string> getNameFunc)
     62         {
     63             return Save(null, null, getNameFunc);
     64         }
     65 
     66         /// <summary>
     67         /// 保存上传文件,设置上传文件名称和文件格式
     68         /// 默认路径为System.IO.Directory.GetCurrentDirectory()
     69         /// </summary>
     70         /// <param name="suffixs"> </param>
     71         /// <param name="getNameFunc">设置上传文件名称方法</param>
     72         public string Save(string suffixs, Func<string> getNameFunc)
     73         {
     74             return Save(null, null, getNameFunc, suffixs);
     75         }
     76 
     77         /// <summary>
     78         /// 保存上传文件,设置上传文件名称,路径为HttpContext.MapPath
     79         /// </summary>
     80         /// <param name="httpContext">当前请求处理的上下文对象</param>
     81         /// <param name="virtualPath">虚拟目录</param>
     82         /// <param name="getNameFunc">获取上传文件名称</param>
     83         /// <param name="suffixs">例如:jpg|jpeg|bmp|gif </param>
     84         /// <returns></returns>
     85         public string Save(HttpContext httpContext, string virtualPath, Func<string> getNameFunc = null, string suffixs = "txt|docx|doc|jpg|jpeg|bmp|gif|xlsx|xls")
     86         {
     87             string suffix = GetFileSuffix();
     88 
     89             if (!VerifySuffix(suffixs)) throw new ArgumentException("文件格式不正确");
     90 
     91             string path;
     92 
     93             if (httpContext == null || string.IsNullOrEmpty(virtualPath))
     94                 path = Directory.GetCurrentDirectory();
     95             else
     96                 path = httpContext.Server.MapPath(virtualPath);
     97 
     98             string fileName = getNameFunc == null ? Guid.NewGuid().ToString() : getNameFunc();
     99 
    100             if (string.IsNullOrEmpty(fileName)) throw new ArgumentException("设置上传文件名方法错误");
    101 
    102             string fullFileName = path + fileName + suffix;
    103             DirectoryProcess(path);
    104             _baseFile.SaveAs(fullFileName);
    105             return fullFileName;
    106         }
    107     }
  • 相关阅读:
    左偏树——可以标记合并的堆
    主席树——多棵线段树的集合
    [中山市选2011]完全平方数 ——莫比乌斯函数
    决策单调性优化dp
    [NOI2015]寿司晚宴——状压dp
    【[国家集训队]等差子序列】
    线性基——数集压缩自动机
    Java实现 蓝桥杯VIP 算法训练 筛选号码
    BSGS&EXBSGS 大手拉小手,大步小步走
    CRT&EXCRT 中国剩余定理及其扩展
  • 原文地址:https://www.cnblogs.com/zhongkai/p/3649901.html
Copyright © 2011-2022 走看看