注:这篇是看了穿哥的教程,提了几个问题,放在下面:大家共同来探讨
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;
}
}
{
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
}
}
{
if (!this.IsPostBack)
{
upImage1.Visible = false; //将图片控件隐藏,否则它会出现一个小XX
}
}
step 9: OK了,启动调试
问题,请高手指教:
· 同时上传多个文件
· 文件后缀是小写的可以下传,如jpg,gif,bmp,png的可以上传,但如果是大写的后缀就不行了
· 上传文件多了,那文件的 重名 问题怎么解决
· 怎么防止恶意攻击