ASP.NET ( C# + SQL ) 学习者

不积小流,无以成江海;不积跬步,无以至千里
让我们一起成长
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

技术专题:服务器控件之——文件上传

Posted on 2006-10-18 14:03  耀眼冰蓝  阅读(1574)  评论(1编辑  收藏  举报

注:这篇是看了穿哥的教程,提了几个问题,放在下面:大家共同来探讨

step 1: 新建一个网站,语言:Visual C#,于是产生了一个Default.aspx 和一个Default.aspx.cs的文件;

step 2: 在Default.aspx 文件的同级目录新建一个up文件夹和一个 upfile文件夹用来存放上传的文件;

step 3: 在Default.aspx .aspx文件的设计视图下从工具箱中拖出4的服务器控件,
             分别是:FileUpLoad 、Button 、Image 、Label ;

step 4: 根据自己的喜好排列好各个控件,并将Image 、Label 两个控件的显示区域拉大一些;

step 5: 将 Label 控件的 text 属性改为 空值;将Button控件的text 属性改为"上传";

step 6: 将4个控件的ID属性改为:upFileUpLoad1 、upButton1 、upImage1 、upLabel1 ; 
             即:加上"up",我们要养成改ID的习惯;

step 7:在Default.aspx .aspx文件的设计视图下,双击Button控件进入编程,代码如下:

protected void upButton1_Click(object sender, EventArgs e)
    {
        
string name = upFileUpload1.FileName; //获取已上传文件夹的名字
        string size = upFileUpload1.PostedFile.ContentLength.ToString(); //获取已上传文件夹的大小
        string type = name.Substring(name.LastIndexOf("."+ 1); //得到文件的后缀

        
string ipath = Server.MapPath("up"+ "\\" + name; //获取文件夹上传的实际路径
        string fpath = Server.MapPath("upfile"+ "\\" + name; //获取文件夹上传的实际路径
        string wpath = "up\\" + name;                          //写入到数据库去的虚拟路径


        
//下面我们得判断文件格式
        if (type == "jpg" || type == "gif" || type == "bmp" || type == "png")
        {
            upImage1.Visible 
= true;
            upFileUpload1.SaveAs(ipath); 
//将文件保存到path这个路径里面
            upImage1.ImageUrl = wpath;   //让图片显示出来
            upLabel1.Text = "你传的文件名称是:" + name + "<br>文件大小为:" + size + "字节<br>文件类型是:" + type + "<br>后缀名是:" + type + "<br>实际路径是:" + ipath + "<br>虚拟路径是:" + wpath;
        }
        
else
        {
            upImage1.Visible 
= false//将图片控件隐藏,否则它会出现一个小XX
            upFileUpload1.SaveAs(fpath); //将文件夹保存在另一个文件夹
            upLabel1.Text = "你传的文件名称是:" + name + "<br>文件大小为:" + size + "字节<br>文件类型是:" + type + "<br>后缀名是:" + type + "<br>实际路径是:" + ipath + "<br>虚拟路径是:" + wpath;
        }
    }


step 8: Page_Load 中加上如下代码:

protected void Page_Load(object sender, EventArgs e)
    {
        
if (!this.IsPostBack)
        {
            upImage1.Visible 
= false//将图片控件隐藏,否则它会出现一个小XX
        }
    }


step 9:
OK了,启动调试


问题,请高手指教:

· 同时上传多个文件
· 文件后缀是小写的可以下传,如jpg,gif,bmp,png的可以上传,但如果是大写的后缀就不行了
· 上传文件多了,那文件的 重名 问题怎么解决
· 怎么防止恶意攻击
28 Apr 07