zoukankan      html  css  js  c++  java
  • 附件上传

    记录一种上传文件的方法。原理比较简单,直接看代码:

    #region 附件上传
        /// <summary>
        /// 附件上传
        /// </summary>
        /// <param name="strReportType">报告类型</param>
        /// <param name="relativePath">相对路径</param>
        /// <returns></returns>
        public static Dictionary<string, string> UploadFilesToPatch(string strReportType, out string relativePath,out string outMsg)
        {
            ///遍历File表单元素 
            HttpFileCollection files = HttpContext.Current.Request.Files;
    
            string strMsg = string.Empty;
            outMsg = string.Empty;
            HttpPostedFile postedFile;
            try
            {
                int nFilelenght = Convert.ToInt32(System.Web.Configuration.WebConfigurationManager.AppSettings["maxRequestLength"]) * 1024;
                for (int iFile = 0; iFile < files.Count; iFile++)
                {
                    //检查文件扩展名
                    postedFile = files[iFile];
                    string fileName, fileExtension;
                    fileName = System.IO.Path.GetFileName(postedFile.FileName).ToLower();
                    if (fileName == null || fileName == string.Empty)
                    {
                        continue;
                    }
                    fileExtension = System.IO.Path.GetExtension(fileName).ToLower();
                    if (IsAllowExtension(fileExtension))
                    {
                        if (nFilelenght < postedFile.ContentLength)
                        {
                            strMsg += fileName + ": 文件大小不能超过 " + nFilelenght.ToString() + " Bytes";
                            break;
                        }
                    }
                    else
                    {
                        strMsg += fileName + ":不支持该文件格式;";
                        break;
                    }
                }
                //文件根路径
                string rootPath = ConfigurationManager.AppSettings["ReportAttachPath"];
                //文件相对路径
                relativePath = DateTime.Now.Year + "/" + strReportType + "/";
                if (strMsg == string.Empty)
                {
                    //取得文件上传目录
                    if (rootPath == "" || rootPath == null)
                    {
                        return null;
                    }
    
                    //检查目录是否存在
                    if (!System.IO.Directory.Exists(rootPath + relativePath))
                    {
                        System.IO.Directory.CreateDirectory(rootPath + relativePath);
                    }
                    //上传文件
                    Dictionary<string, string> result = new Dictionary<string, string>();
                    string strFileName;
                    DateTime time;
                    for (int iFile = 0; iFile < files.Count; iFile++)
                    {
                        if (files[iFile].FileName == null || files[iFile].FileName == string.Empty)
                        {
                            continue;
                        }
                        time = DateTime.Now;
                        strFileName = System.IO.Path.GetFileName(files[iFile].FileName);
                        files[iFile].SaveAs(rootPath + relativePath + "R" + time.ToString("yyyy-MM-dd-hh-mm-ss") + time.Ticks.ToString() + strFileName);
                        result.Add("R" + time.ToString("yyyy-MM-dd-hh-mm-ss") + time.Ticks.ToString() + strFileName, strFileName);
                    }
                    return result;
                }
                else
                {
                    outMsg = strMsg;
                    return null;
                }
            }
            catch (System.Exception Ex)
            {
                throw Ex;
            }
        }
    
    
        /// <summary>
        /// 判断文件后缀名是否被允许上传
        /// </summary>
        /// <param name="fileExtension">后缀名</param>
        /// <returns></returns>
        public static bool IsAllowExtension(string fileExtension)
        {
            if (fileExtension == null || fileExtension == string.Empty)
            {
                return false;
            }
            if (fileExtension.IndexOf('.') >= 0)
            {
                fileExtension = fileExtension.Substring(fileExtension.IndexOf('.')).ToLower();
            }
            else
            {
                fileExtension = fileExtension.ToLower();
            }
            string[] strFileExtension = System.Web.Configuration.WebConfigurationManager.AppSettings["fileExtension"].Split();
            foreach (string fe in strFileExtension)
            {
                if (fileExtension == fe)
                {
                    return false;
                }
            }
            return true;
        }
        #endregion
  • 相关阅读:
    leetcode58. 最后一个单词的长度 🌟
    leetcode53. 最大子序和 🌟
    leetcode38. 报数 🌟
    leetcode35. 搜索插入位置 🌟
    leetcode28. 实现strStr() 🌟
    ⚠️ Python 循环列表删除元素的注意事项
    leetcode27. 移除元素 🌟
    leetcode26. 删除排序数组中的重复项 🌟
    javascript 高阶函数 currying & uncurrying
    javascript 高阶函数 实现 AOP 面向切面编程 Aspect Oriented Programming
  • 原文地址:https://www.cnblogs.com/fo0ol/p/3614360.html
Copyright © 2011-2022 走看看