如题 有安全的C#代码 非常非常感谢!

解决方案 »

  1.   


                if (UpFile.HasFile)
                {
                    //检验上传文件大小
                    int MaxLength = MaxMb * 1024 * 1024;
                    int FileLength = UpFile.PostedFile.ContentLength;
                    if (FileLength >= MaxLength)
                    {
                        Msg = "上传的文件超过" + MaxMb + "mb,无法上传!";
                        return AnnexID;
                    }
                    //检验上传文件类型
                    string fileExtension = System.IO.Path.GetExtension(UpFile.FileName).ToLower();
                    bool fileOK = false;
                    for (int i = 0; i < allowedExtensions.Length; i++)
                    {
                        if (fileExtension == allowedExtensions[i])
                        {
                            fileOK = true;
                        }
                    }
                    if (!fileOK)
                    {
                        Msg = "上传的文件类型不符合要求!";
                        return AnnexID;
                    }
                    //文件大小的处理
                    string File = FileLength.ToString() + "b";
                    if (FileLength >= 1024)
                    {
                        if (FileLength >= 1024 * 1024)
                        {
                            double m = System.Math.Round((float)FileLength / (1024.0 * 1024.0), 2);
                            File = m.ToString() + "Mb";
                        }
                        else
                        {
                            double k = System.Math.Round((float)FileLength / 1024.0, 2);
                            File = k.ToString() + "Kb";
                        }
                    }
                    //设置附件路径
                    string Dirpath = "\\" + DateTime.Now.Year.ToString() + "\\" + DateTime.Now.Month.ToString() + "\\" + DateTime.Now.Day.ToString() + "\\";
                    string Savepath2 = Server.MapPath(SavePath) + Dirpath;
                    if (!Directory.Exists(Savepath2))    //文件夹不存在 创建它
                    {
                        Directory.CreateDirectory(Savepath2);
                    }
                    //数据库字段设置
                    Model.RealName = System.IO.Path.GetFileName(UpFile.FileName).ToLower();
                    Model.AnnexSize = File;
                    Model.AnnexExtension = System.IO.Path.GetExtension(UpFile.FileName).ToLower();
                    Model.AnnexRe = Description;
                    Model.AppType = AppType;
                    Model.AppID = AppID;
                    Model.SaveName = DateTime.Now.ToString("yyyyMMddHHmmss") + rand.Next(100, 999).ToString();
                    Model.AnnexPath = Dirpath;
                    //数据库记录添加
                    AnnexID = Annex.Add(Model);
                    //上传文件至服务器
                    UpFile.PostedFile.SaveAs(Savepath2 + Model.SaveName + Model.AnnexExtension);
                }
                else
                {
                    Msg = "你指定的文件不存在!";
                    return AnnexID;
                }应该说写的比较垃圾,先看看吧
      

  2.   

    先谢谢hy_lihuan贴的代码 我想问一下AnnexID是做什么用的 ?
      

  3.   

    allowedExtensions 是不是有个方法?
      

  4.   

    allowedExtensions 是你允许的文件类型后缀的字符串类型数组
    AnnexID是用于返回数据库中记录的数据Id,没有添加到数据库的话,就是空值。
    至于有什么用,就看你自己需要怎么用了,你如果不需要用的话,你完全可以不用。
    这里看来应该是用来判断文件是否成功上传