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
  • 相关阅读:
    [模板] 循环数组的最大子段和
    [最短路][几何][牛客] [国庆集训派对1]-L-New Game
    [洛谷] P1866 编号
    1115 Counting Nodes in a BST (30 分)
    1106 Lowest Price in Supply Chain (25 分)
    1094 The Largest Generation (25 分)
    1090 Highest Price in Supply Chain (25 分)
    树的遍历
    1086 Tree Traversals Again (25 分)
    1079 Total Sales of Supply Chain (25 分 树
  • 原文地址:https://www.cnblogs.com/fo0ol/p/3614360.html
Copyright © 2011-2022 走看看