上传文件

 1     首先得建立个文件夹保存上传的文件;数据库

 2     在项目里加一个上传文件的控件FileUpload和按钮,目的是点击按钮上传文件,效果如图所示:安全

                                                                       

 3     上传文件 :用SaveAs方法,代码以下:网站

         

 private void Button1_Click(object sender, EventArgs e)
    {
        string path = "Upload/aaa.text";//将类型为TXT的文件命名为aaa.text并存到Upload文件夹里
        string end = Server.MapPath(path);//将虚拟路径转换为物理路径
        FileUpload1.SaveAs(end);          //执行上传命令
    }

 

 

4   逐步完善spa

           1) 只能上传类型为TXT的文件;code

                解决方法:将文件名改为原文件的名字;即:blog

        string path = "Upload/aaa.text" 改为  string path = "Upload/"+FileUpload1.FileName; //上传全部类型的文件

           2)重名覆盖ip

               解决方法:string

              1)上传文件名字加上日期,即:it

              string path = "Upload/"+DateTime.Now.ToString("yyyMMddHHmmssms")+FileUpload1.FileName;io

              2)为防止碰到两我的同一时间同时上传形成再次重名再加一步:

                  解决方法:将用户名再加上(必须保证数据库用户名不能相同)即:

                    

             3)提升安全性:
                   解决方法:第一步将上传的名字以'.'拆分,而后判断最后一个.后的后缀名,就是判断文件的上传类型,若是是不容许上传类型就阻止;代码以下:

 private void Button1_Click(object sender, EventArgs e)
    {
      string[] s=FileUpload1.FileName.Split('.'); //将文件名以'.'拆分
        if (s[s.Length - 1] == "aspx" || s[s.Length - 1] == "asp" || s[s.Length - 1] == "avi") //判断上传文件的类型
        {
            Response.Write("<script> alert('不被容许上传的文件类型') ;</script>");
            return ; //阻止,不让继续执行下边代码
        }

        string path = "Upload/"+Session["user"]+DateTime.Now.ToString("yyyMMddHHmmssms")+FileUpload1.FileName;//将类型为TXT的文件命名为aaa.text并存到Upload文件夹里
        string end = Server.MapPath(path);//将虚拟路径转换为物理路径
        FileUpload1.SaveAs(end);          //执行上传命令
    }
   

         4)约束用户上传文件类型

              解决方法:在源代码里的FileUpload1控件里添加一条属性;即:

                 

            accept 就是能上传的文件,只是为了用户上传更方便(用户只能看到accept约束的类型)但仍能够经过其余方式上传其余文件因此后边验证类型代码仍然须要

 

       5)  扩容 ;默认上传文件的大小4MB;若是须要限制文件长度则须要在项目配置文件里将容许最大请求长度扩容;以网站项目为例;即在Web.config里添加 httpRuntime (网站打开时运行的)的maxRequestLength(最大请求长度)40960就是40M属性即: