zoukankan      html  css  js  c++  java
  • 上传文件 解析

    public partial class Upload : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                try
                {
                    Response.Charset = "UTF-8";
                    Response.Write(upLoadFile("filedata"));  //文件名传参。有返回值JSON格式用于提示客户
                }
                catch
                {

                }
            }
            /// <summary>
            /// 上传文件
            /// </summary>
            string upLoadFile(string inputname)
            {
                string immediate;
                string attachdir;
                int dirtype;
                int maxattachsize;
                string upext;
                int msgtype;

                immediate = Request.QueryString["immediate"];//立即模式
                attachdir = "upload";     // 上传文件保存路径,结尾不要带/  UPLOAD 文件夹  用于在服务器上存储用户上传的文件夹
                dirtype = 1;              // 1:按天存入目录 2:按月存入目录 3:按扩展名存目录  建议使用按天存   目录生成的每天一个文件夹
                maxattachsize = 2097152;  // 最大上传大小,默认是2M                   文件大小限制
                upext = "txt,rar,zip,jpg,jpeg,gif,png,swf,wmv,avi,wma,mp3,mid,doc,xls,ppt"; // 上传扩展名          EXT文件后缀名称 对应
                msgtype = 2;        //返回上传参数的格式:1,只返回url,2,返回参数数组

                string err, msg;
                err = "";
                msg = "''";

                HttpFileCollection filecollection = Request.Files;            //所有上载文件的访问提供

                // 只接收指定文件域的上传,如果需要同时接收多个文件,请通过循环方式接收
                HttpPostedFile postedfile = filecollection.Get(inputname); //单个上载文件的访问提供

                if (postedfile == null)
                {
                    err = "无数据提交";
                }
                else
                {
                    if (postedfile.ContentLength > maxattachsize)
                    {
                        err = "文件大小超过" + maxattachsize + "字节";
                    }
                    else
                    {
                        string attach_dir, attach_subdir, filename, extension, target;

                        // 取上载文件后缀名
                        extension = GetFileExt(postedfile.FileName);

              if (("," + upext + ",").IndexOf("," + extension + ",") < 0)//如果在所有允许后缀名成中 找到上传文件名称 的位置 <0,则证明 不包含上传后缀名文件
                        {
                            err = "上传文件扩展名必需为:" + upext;
                        }
                        else
                        {
                            switch (dirtype)
                            {
                                case 2://按月存放
                                    attach_subdir = "month_" + DateTime.Now.ToString("yyMM");
                                    break;
                                case 3://按扩展名存放
                                    attach_subdir = "ext_" + extension;
                                    break;
                                default://按日存放
                                    attach_subdir = "day_" + DateTime.Now.ToString("yyMMdd"); //格式 day_20110518
                                    break;
                            }
                            attach_dir = attachdir + "/" + attach_subdir + "/"; //  “Upload /day_20110518” 路径格式拼接,先定义总的文件路径,在拼接按日存放中每天所属文件夹

                            // 生成随机文件名
                            Random random = new Random(DateTime.Now.Millisecond); //文件名成为 随机的年月日小时分毫秒 构成
                            filename = DateTime.Now.ToString("yyyyMMddhhmmss") + random.Next(10000) + "." + extension; //年月日时分秒+反回一个小于指定值的最大随机数+文件名后缀   拼接文件名称

                            target = attach_dir + filename;       //拼接 文件路径+文件名称    文件所有路径信息得出

                            try
                            {
                                string rootPath = Request.ApplicationPath;     //得到项目根目录
                                if (rootPath.Substring(rootPath.Length - 1) != "/")
                                {
                                    rootPath += "/";
                                }
                                CreateFolder(Server.MapPath(rootPath + attach_dir));//存入根目录下文件夹               创建文件夹
                                postedfile.SaveAs(Server.MapPath(rootPath + target));//存入根目录下文件夹             存文件到指定位置

                            }
                            catch (Exception ex)
                            {
                                err = ex.Message.ToString();                                              //格式不正确
                            }

                            // 立即模式判断
                            if (immediate == "1") target = "!" + target;
                            target = jsonString(target);

                            if (msgtype == 1)
                            {
                                msg = "'" + target + "'";
                            }
                            else
                            {   //id是用户上传的文件名
                                //localname是上传以后在服务器端的文件路径/文件名
                                msg = "{url:'../../" + target + "',hostname:'../../" + target + "',filename:'" + GetFileName(postedfile.FileName) + "'}";
                            }

                        }
                    }

                }

                postedfile = null;
                filecollection = null;

                return "{err:'" + jsonString(err) + "',msg:" + msg + "}";
            }

            /// <summary>
            /// 把返回的数据转化成json格式
            /// </summary>
            string jsonString(string str)
            {
                str = str.Replace("\\", "\\\\");
                str = str.Replace("/", "\\/");
                str = str.Replace("'", "\\'");
                return str;
            }

            /// <summary>
            /// 获取文件扩展名
            /// </summary>
            /// <param name="FullPath">完整路径</param>
            /// <returns></returns>
            string GetFileExt(string FullPath)
            {
                if (FullPath != "")
                {
                    return FullPath.Substring(FullPath.LastIndexOf('.') + 1).ToLower(); //最后一个‘.’之后的第一个位置开始截取  是 后缀名称
                }
                else
                {
                    return "";
                }
            }

            /// <summary>
            /// 获取文件名
            /// </summary>
            /// <param name="FullPath">完整路径</param>
            /// <returns></returns>
            string GetFileName(string FullPath)
            {
                if (FullPath != "")
                {
                    return FullPath.Substring(FullPath.LastIndexOf('\\') + 1).ToLower(); 
                }
                else
                {
                    return "";
                }
            }

            /// <summary>
            /// 创建文件夹
            /// </summary>
            void CreateFolder(string FolderPath)
            {
                if (!System.IO.Directory.Exists(FolderPath))
                {
                    System.IO.Directory.CreateDirectory(FolderPath);
                }
            }
        }

  • 相关阅读:
    二叉平衡树
    红黑树
    [leetcode] LCP 比赛
    二叉搜索树
    面向对象的二叉树的实现
    二叉树的序列化与反序列化
    [leetcode] 基本计算器
    【pandas】玩转一行拆多行,多行并一行(分分合合你说了算)
    【VBA】数据溢出与解决
    【VBA】criterial 未找到命名参数
  • 原文地址:https://www.cnblogs.com/mahaisong/p/1980553.html
Copyright © 2011-2022 走看看