ASP.NET有两个控件允许用户将文件上传到Web服务器.一旦服务器收到发布的文件数据,应用程序就可以保存,检查或忽略它.以下控件允许文件上传:
HtmlInputFile - HTML服务器控件
FileUpload - 和ASP.NET网页控制
两个控件都允许文件上传,但FileUpload控件会自动设置表单的编码,而HtmlInputFile则不会这样做.
在本教程中,我们使用FileUpload控件. FileUpload控件允许用户浏览并选择要上传的文件,提供浏览按钮和用于输入文件名的文本框.
一次,用户输入了文件名通过键入名称或浏览文本框,可以调用FileUpload控件的SaveAs方法将文件保存到磁盘.
FileUpload的基本语法是:
<asp:FileUpload ID= "Uploader" runat = "server" />
FileUpload类派生自WebControl类,并继承其所有成员.除此之外,FileUpload类具有以下只读属性:
属性 | 描述 |
---|---|
FileBytes | 返回要上传的文件中的字节数组. |
FileContent | 返回指向要上载的文件的流对象. |
FileName | 返回要上传的文件的名称. |
HasFile | 指定控件是否有要上载的文件. |
PostedFile | 返回对上传文件的引用. |
发布的文件封装在HttpPostedFile类型的对象中,可以通过FileUpload类的PostedFile属性访问.
HttpPostedFile类具有以下frequ使用过的属性:
属性 | 描述 |
---|---|
ContentLength | 返回大小上传的文件以字节为单位. |
ContentType | 返回的MIME类型上传的文件. |
FileName | 返回完整的文件名. |
InputStream | 返回指向上传文件的流对象. |
以下示例演示FileUpload控件及其属性.该表单有一个FileUpload控件以及一个保存按钮和一个标签控件,用于显示文件名,文件类型和文件长度.
在设计视图中,表单如下所示:
内容文件代码如下给定:
<body>保存按钮后面的代码如下:
protected void btnsave_Click(object sender, EventArgs e) { StringBuilder sb = new StringBuilder(); if (FileUpload1.HasFile) { try { sb.AppendFormat(" Uploading file: {0}", FileUpload1.FileName); //saving the file FileUpload1.SaveAs("<c:\\SaveDirectory>" + FileUpload1.FileName); //Showing the file information sb.AppendFormat("<br/> Save As: {0}", FileUpload1.PostedFile.FileName); sb.AppendFormat("<br/> File type: {0}", FileUpload1.PostedFile.ContentType); sb.AppendFormat("<br/> File length: {0}", FileUpload1.PostedFile.ContentLength); sb.AppendFormat("<br/> File name: {0}", FileUpload1.PostedFile.FileName); }catch (Exception ex) { sb.Append("<br/> Error <br/>"); sb.AppendFormat("Unable to save file <br/> {0}", ex.Message); } } else { lblmessage.Text = sb.ToString(); } }
请注意以下事项:
StringBuilder类派生自System.IO命名空间,因此需要包含它.
try和catch块是用于捕获错误,并显示错误消息.