ASP.NET 2.0之HtmlInputFile控件使用小结

简介:
在本文中,我将简要地总结ASP.NET 2.0中HtmlInputFile控件的使用要点,并给出一个典型的ASPX页面示例。
    HtmlInputFile是把文件从一个浏览器上传到Web服务器的HTML工具。①为了充分利用HtmlInputFile控件,首先应确保服务器窗体的Enctype属性设置为multipart/form-data。 
    注意:在ASP.NET 2.0中,在生成该控件的标记之前系统会自动地设置合适的Enctype属性。
    其实,生成HTML的方法与具体的浏览器有关,但是它通常是由一个文本框和一个浏览按钮组成的。用户从本地机器上选择一个文件,然后单击该按钮把页面提交给服务器。这时,浏览器把所选的文件上传到服务器,如下图所示。  
    注意 在ASP.NET之前,需要在后台运行一个服务器端进程,即Posting Acceptor,以处理multipart/form-data提交。ASP.NET不再需要Posting Acceptor,因为它是通过ASP.NET运行库实现的。
    ②在服务器上,文件放在一个HttpPostedFile类型的对象中,并且在此一直放到被处理为止(例如,保存到磁盘或数据库)。HttpPostedFile对象提供了一些属性和方法,用来获得各文件的相关信息,以及读取和保存该文件。以下代码说明了如何把一个投递的文件保存到磁盘上的一个特定文件夹中:

  
  
<% @ Page language="C#" %> <% @ Import Namespace="System.IO" %> < script runat ="server" > void UploadButton_Click(object sender, EventArgs e) { // 指定在服务器端要保存上传文件的路径。 // *** 假定路径存在*** string savePath = UploadPath.Text; if (!Directory.Exists(savePath)) { Response.Write(String.Format("<h1>上传文件路径不存在:{0}</h1>", savePath)); Response.End(); } // 在试图操作文件前, // 先验证FileUpload 控件包含一个文件 if (FileUpload1.HasFile) { // 取得要上传的文件名 string fileName = FileUpload1.FileName; // 把文件名添加到上传路径 savePath += fileName; // 调用SaveAs 方法来把上传文件保存到指定路径下。 // 注意,本示例并没有实现所有必要错误检查操作。 // 如果同名字的文件已经存在,则上传文件将覆盖之。 FileUpload1.SaveAs(savePath); // 通知用户文件名保存的位置 UploadStatusLabel.Text = "文件被保存为: <i>" + savePath + "</i>"; } else { // 通知用户没有上传一个文件. UploadStatusLabel.Text = "你没有指定要上传的文件。"; } } </ script > < html > < head runat ="server" > < title > ASP.NET 2.0之HtmlInputFile控件使用小结 </ title > </ head > < body > < form runat ="server" > < h4 style ="text-align: center" > < span style ="font-size: 24pt; color: #000099" > 请选择要上传的文件: </ span ></ h4 > < b ></ b >< strong > 上传文件保存路径 </ strong >< br /> < asp:textbox id ="UploadPath" runat ="server" text ="c:\temp\" /> < hr /> < b > 要上传的文件 </ b >< br /> < asp:fileupload id ="FileUpload1" runat ="server" /> < br >< br > < asp:button id ="UploadButton" text ="开始上传文件" onclick ="UploadButton_Click" runat ="server" > </ asp:button > < hr /> < asp:label id ="UploadStatusLabel" runat ="server" > </ asp:label > </ form > </ body > </ html >
    ③我们还可以使用HttpPostedFile对象的InputStream属性在持久性或处理之前读取投递的数据。HtmlInputFile控件还允许我们限制上传到服务器的文件类型。为此,你只需要使用一个以逗号分离的MINE类型列表设置Accept属性即可。
    ④注意,在使用SaveAs方法时,一定要指定到达输出文件的完整路径。如果你提供的是一个相对路径,则ASP.NET试图把文件放入系统目录下。这种做法会导致“Access denied”错误。此外,一定要为ASP.NET使用的帐号提供我们想用来存储文件的目录的写入权限。
    ⑤此外,ASP.NET对上传的数据量实施一些控制。你可以通过配置文件web.config中的<httpRuntime>节中的 MaxRequestLength属性设置最大允许的文件大小。如果文件超过规定的大小(默认为4MB),浏览器中就会产生一个错误。而当上传大型文件时,由于系统内存过度消耗,也会产生另一种运行时错误;因此,这时要采取特别措施。
    最后,本文所附示例页面在Windows XP+.net 2.0+Visual Web Developer 2005 Express Edition环境下调试通过。



















本文转自朱先忠老师51CTO博客,原文链接:http://blog.51cto.com/zhuxianzhong/59365  ,如需转载请自行联系原作者

相关文章
|
4月前
|
开发框架 JavaScript 前端开发
震撼!破解 ASP.NET 服务器控件 Button 执行顺序之谜,颠覆你的开发认知!
【8月更文挑战第16天】在ASP.NET开发中,通过Button控件实现先执行JavaScript再触后台处理的需求十分常见。例如,在用户点击按钮前需前端验证或提示,确保操作无误后再传递数据至后台深度处理。此过程可通过设置Button的`OnClientClick`属性调用自定义JavaScript函数完成验证;若验证通过,则继续触发后台事件。此外,结合jQuery也能达到相同效果,利用`__doPostBack`手动触发服务器端事件。这种方式增强了应用的交互性和用户体验。
49 8
|
2月前
|
开发者 Windows
.NET 开源扁平化、美观的 C/S 控件库
【10月更文挑战第23天】介绍了三款适用于 .NET 平台的开源扁平化、美观的 C/S 控件库:MaterialSkin 采用 Google Material Design 风格,适合现代感界面;Krypton Toolkit 提供丰富控件,界面易于定制;Fluent Ribbon Control Suite 模仿 Office 界面,适合复杂功能应用。每款控件库均附有示例代码及 GitHub 链接。
winform .net6 和 framework 的图表控件,为啥项目中不存在chart控件,该如何解决?
本文讨论了在基于.NET 6和.NET Framework的WinForms项目中添加图表控件的不同方法。由于.NET 6的WinForms项目默认不包含Chart控件,可以通过NuGet包管理器安装如ScottPlot等图表插件。而对于基于.NET Framework的WinForms项目,Chart控件是默认存在的,也可以通过NuGet安装额外的图表插件,例如LiveCharts。文中提供了通过NuGet添加图表控件的步骤和截图说明。
winform .net6 和 framework 的图表控件,为啥项目中不存在chart控件,该如何解决?
|
2月前
|
C# Android开发 iOS开发
一组.NET MAUI绘制的开源控件 - AlohaKit
一组.NET MAUI绘制的开源控件 - AlohaKit
|
3月前
|
开发框架 JavaScript 前端开发
|
7月前
|
SQL 开发框架 JavaScript
分享33个ASP.NET电子商务源码和40个ASP.NET控件组件源码,总有一款适合您
分享33个ASP.NET电子商务源码和40个ASP.NET控件组件源码,总有一款适合您
92 0
|
7月前
|
SQL 开发框架 前端开发
ASP.NET WEB项目中GridView与Repeater数据绑定控件的用法
ASP.NET WEB项目中GridView与Repeater数据绑定控件的用法
85 0
|
7月前
|
JavaScript C#
【傻瓜级JS-DLL-WINCC-PLC交互】2.wincc使用C#开发的.net控件
【傻瓜级JS-DLL-WINCC-PLC交互】2.wincc使用C#开发的.net控件
126 0
|
7月前
|
JavaScript Linux C#
【傻瓜级JS-DLL-WINCC-PLC交互】1.C#用windows窗体控件创建.net控件
【傻瓜级JS-DLL-WINCC-PLC交互】1.C#用windows窗体控件创建.net控件
146 0
|
7月前
|
开发框架 .NET 数据安全/隐私保护
Asp.Net第二章服务器端控件
Asp.Net第二章服务器端控件
56 0