一、上传控件FileUpload
public void SaveAs(string filename) 保存上载文件的内容。参数:filename 保存的文件的名称即文件保存的路径。
this.FileUpload1.PostedFile.SaveAs(“保存的文件的名称 ”);
FileUpload1.FileName是要保存的文件的文件名;
FileUpload1.PostedFile.ContentType是要保存的文件的格式;
FileUpload1.PostedFile.ContentLength是要保存的文件的大小;判断这个属性时要先运行Web.config中的代码,上传控件能传的最大
值是4兆,而Web.config默认也是4兆所以在Web.config中也要写代码将最大值修改一下,写上<httpRuntime maxRequestLength="40000"/>
将最大值改为40000字节,只要大过最大的上传文件即可。
web.config中规定的上传文件大小指的是所有上传文件大小的和不能超过这个设定值
2、上传多个文件,即写入多个上传控件
多个控件上传,应 HttpFileCollection files = Request.Files;此方法
获取采用多部分 MIME 格式的由客户端上载的文件的集合。
返回结果:
System.Web.HttpFileCollection 对象,表示客户端上载的文件集合。System.Web.HttpFileCollection
对象的项属于 System.Web.HttpPostedFile 类型。
所以保存时就应该循环保存。
HttpFileCollection files = Request.Files;
for (int i = 0; i < files.Count; i++)
{
HttpPostedFile file = files[i];//HttpPostedFile file,是提供对客户端已上载的单独文件的访问。
file.SaveAs("D:\\"+file.FileName);
}
如果没有选择上传文件,则文件名称为空,直接上传会报错,這时候需要判断文件名称是否为空,然后在上传
即完整的代码是:
HttpFileCollection files = Request.Files;
for (int i = 0; i < files.Count; i++)
{
HttpPostedFile file = files[i];
if (file.FileName!="")
{
file.SaveAs("D:\\"+file.FileName);
}
}
二、image控件,上传图片
对于Image控件,建议不要使用跟路径,而应该使用相对路径
image控件有一个属性可以接收图片的路径,而对于客户端来说图片是用户选择的,所以应该由用户上传图片,将图片显示在
控件中。
如果我们将项目传到另一台计算机上,如果图片的保存路径是根路径(带有磁盘的路径)例如存在D盘,但新的计算器不包括
D盘,那将会带来错误。所以我们应将图片存在项目一个文件夹中,而且可以动态获取文件夹的路径。
1、在资源管理器中添加一个文件夹,例如图中的images文件夹
2、动态获取路径,将图片上传到路径中。
//MapPath根据文件或文件夹在当前项目的路径来获取其根路径
//MapPath("")空的时候找到的是当前项目的路径,可以在其中写上你想找的文件的路径
//string name = this.FileUpload1.FileName;
//string str=Server.MapPath("");
//Response.Write(str);
//this.FileUpload1.PostedFile.SaveAs(str+@"\image\"+name);
//this.Image1.ImageUrl = "image\\"+name;
//image控件只能接受相对路径,不能接收绝对路径既有磁盘的路径
string name = this.FileUpload1.FileName;
string str = Server.MapPath("\\image\\");
Response.Write(str);
this.FileUpload1.PostedFile.SaveAs(str + name);
this.Image1.ImageUrl = "image\\" + name;//相对路径
三、将图片的路径插入到数据库中
1、在数据库中添加一个字段
2、将图片的路径保存住。点击上传按钮时会使页面发生刷新,图片的路径会被抹掉。所以image控件的ImageUrl属性并未保存住路径。
this.Image1.ImageUrl = "images/" + FileUpload1.FileName;
ViewState["imgurl"] = "images/" + FileUpload1.FileName;//此方法可以保存住。
ViewState 获取状态信息的字典,这些信息使您可以在同一页的多个请求间保存和还原服务器控件的视图状态。
四、当由一个页面跳到另一个页面时,如何保存前一个页面中的信息呢?
例如,利用前页面的用户名在第二个页面中查询他的基本信息。并显示他的用户名。
利用这个方法进行保存:
Session["username"] = this.txbUserName.Text.Trim();//如果都用这个保存会占很多内存,所以会根据条件在数据库中查询。
Session
获取 ASP.NET 提供的当前 Session 对象。
返回结果: 当前会话状态数据。
三和四中的方法不能混用。