1、在前台页面需要用到的控件是FileUpload
2、后台的代码,通过代码来理解上传过程
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
List<string> type = new List<string>(); //该集合来存放一些文件的格式,来为下面的类型判断做准备。
type.Add("image/jpeg");
type.Add("image/x-png");
if (FileUpload1.HasFile) //这个if语句判断的是是否选择了需要上传的文件。如果选择了FileUpload1.HasFile返回true,没有选择返回false。若没有这个判断会报错。
{
if (type.Contains(FileUpload1.PostedFile.ContentType) == false) //这个判断上传数据的类型。看是否与上面集合里面有的类型相匹配。如果有,允许上传。
{
Label1.Text = "上传的图片格式不正确,只支持jpg和png格式的图片";
}
else
{
if (FileUpload1.PostedFile.ContentLength <= 20* 1024 * 1024) //该if语句判断上传文件的大小,如果上传的文件太大,可能占用服务器时间过程,可以导致别人无法访问服务器。也会存在安全问题。当然光在这儿限制大小还会出现问题的。程序是先进入Web.config的,当这里的限制条件通不过也是要报错的。所以要在Web.config你面加上这样一段代码: <httpRuntime maxRequestLength="94000"/>;94000是一个可变值,只有上传的文件满足这儿的限制条件,才会进出C#后台的if判断语句。
{
string str = "F:\\Asp.net\\文件上传\\文件上传\\image" + FileUpload1.PostedFile.FileName;
FileUpload1.PostedFile.SaveAs(str); //用SaveAs()方法来将选择的文件存到指定的位置。F:\\Asp.net\\文件上传\\文件上传\\image为指定的文件夹,FileUpload1.PostedFile.FileName是存到指定位置后还用原来的文件名。
Label1.Text = "上传成功";
}
else
{
Label1.Text = "您传的文件过大";
}
}
}
else
{
Label1.Text = "请选择要上传的文件";
}
}
}
注意,if语句的顺序很重要,否则会出现提示错误。或者报异常等。