- ASP.NET 教程
- ASP.NET - 首页
- ASP.NET - 简介
- ASP.NET - 环境
- ASP.NET - 生命周期
- ASP.NET - 第一个示例
- ASP.NET - 事件处理
- ASP.NET - 服务器端
- ASP.NET - 服务器控件
- ASP.NET - HTML 服务器控件
- ASP.NET - 客户端
- ASP.NET - 基本控件
- ASP.NET - 指令
- ASP.NET - 状态管理
- ASP.NET - 验证器
- ASP.NET - 数据库访问
- ASP.NET - ADO.NET
- ASP.NET - 文件上传
- ASP.NET - 广告轮播控件 (Ad Rotator)
- ASP.NET - 日历控件
- ASP.NET - 多视图
- ASP.NET - 面板控件
- ASP.NET - AJAX 控件
- ASP.NET - 数据源
- ASP.NET - 数据绑定
- ASP.NET - 自定义控件
- ASP.NET - 个性化设置
- ASP.NET - 错误处理
- ASP.NET - 调试
- ASP.NET - LINQ
- ASP.NET - 安全性
- ASP.NET - 数据缓存
- ASP.NET - Web 服务
- ASP.NET - 多线程
- ASP.NET - 配置
- ASP.NET - 部署
- ASP.NET 资源
- ASP.NET - 快速指南
- ASP.NET - 有用资源
- ASP.NET - 讨论
ASP.NET - 文件上传
ASP.NET 有两个控件允许用户将文件上传到 Web 服务器。服务器收到已发布的文件数据后,应用程序可以保存、检查或忽略它。以下控件允许文件上传:
HtmlInputFile - 一个 HTML 服务器控件
FileUpload - 一个 ASP.NET Web 控件
这两个控件都允许文件上传,但 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 类具有以下常用属性:
属性 | 描述 |
---|---|
ContentLength | 返回上传文件的大小(以字节为单位)。 |
ContentType | 返回上传文件的 MIME 类型。 |
FileName | 返回完整的文件名。 |
InputStream | 返回指向上传文件的流对象。 |
示例
以下示例演示了 FileUpload 控件及其属性。该表单包含一个 FileUpload 控件以及一个保存按钮和一个标签控件,用于显示文件名、文件类型和文件长度。
在设计视图中,表单如下所示:
内容文件代码如下所示:
<body> <form id="form1" runat="server"> <div> <h3> File Upload:</h3> <br /> <asp:FileUpload ID="FileUpload1" runat="server" /> <br /><br /> <asp:Button ID="btnsave" runat="server" onclick="btnsave_Click" Text="Save" style="width:85px" /> <br /><br /> <asp:Label ID="lblmessage" runat="server" /> </div> </form> </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 块用于捕获错误并显示错误消息。
广告