这几天网上看到很多ASP.NET无组件上传,想自己写一个玩一玩。资料:www.shengfang.org 使用 HtmlInputFile 服务器控件可以处理从浏览器客户端向服务器上载的二进制文件或文本文件。可以在 Microsoft Internet Explorer 3.02 或更高版本中上载文件。www.shengfang.org 注意 为使此控件正常工作,必须将 HtmlForm 的 Enctype 属性设置为 "multipart/form-data"。 若要指定要上载的文件,请在控件的文本框中输入文件的完整路径(例如,“C:\MyFiles\Test.txt”)。您也可通过单击“浏览”按钮,然后在“选择文件”对话框中定位文件来www.shengfang.org选择文件。 HtmlInputFile 控件没有用于回发到服务器的内置方式。要将文件上载到服务器,请使用 PostedFile 属性中包含的 System.Web.HttpPostedFile 的 SaveAs 方法。此操作通常在事件处理方法(如按钮单击事件的事件处理方法)中进行。www.shengfang.org 注意 使用 SaveAs 方法时,确保指定文件的完整路径(例如,“C:\MyFiles\Test.txt”)。否则,会尝试将文件放置在 systemroot\system32\inetsrv 目录中。默认情况下,此目录是写保护的;因此,文件不能保存在这里。确保为 ASP.NET 使用的帐户提供要存储文件的目录的写权限。 www.shengfang.org上载大文件时,可使用 <httpRuntime> 元素的 maxRequestLength 属性来增加文件大小的最大允许值。当文件超出指定的大小时,浏览器中会产生 DNS 错误。上载大文件时,还可能会收到以下错误信息: aspnet_wp.exe (PID: 1520) 被回收,因为内存消耗超过了 460 MB(可用 RAM 的百分之 60)。 如果遇到此错误信息,请增加应用程序的 Web.config 文件的 <processModel> 元素中 memoryLimit 属性的值。
拖一个 VS.NET 2003 工具箱 HTML FILE FIELD,放在页面上,再放置一个BUTTON,两个控件都点击 右键 ,选择菜单:作为服务器控件运行,双击BUTTON,输入如下代码:File1.PostedFile.SaveAs("c:/123.123"); 即可 <% at Page language="c#" Codebehind=www dot shengfang.org"WebForm1.aspx.cs" AutoEventWireup="false" Inherits="WebApplication2.WebForm1" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > <HTML> <HEAD> <title>WebForm1</title> <meta name="GENERATOR" Content="www.shengfang.orgMicrosoft Visual Studio .NET 7.1"> <meta name="CODE_LANGUAGE" Content="C#"> <meta name="vs_defaultClientScript" content="JavaScript"> <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> </HEAD> <body MS_POSITIONING="GridLayout"> <form id="Form1" method="post" runat="server" enctype="multipart/form-data"> <FONT id="FONT1" face="宋体" runat="server"><INPUT id="File1" style="Z-INDEX: 101; LEFT: 88px; WIDTH: 280px; POSITION: absolute; TOP: 80px; HEIGHT: 32px" type="file" size="27" name="File1" runat="server"><INPUT id="Button1" style="Z-INDEX: 102; LEFT: 192px; WIDTH: 136px; POSITION: absolute; TOP: 192px; HEIGHT: 40px" type="button" value="Button" name="www.shengfang.orgButton1" runat="server"></FONT> </form> </body> </HTML> private void Button1_ServerClick(object sender, System.EventArgs e) { File1.PostedFile.SaveAs("c:/123.123"); } 症状 在使用 HtmlInputFile 控件上载一个大文件时,www.shengfang.org该文件可能无法上载。 返回页首 原因 之所以会发生此问题,是因为 Machine.config 文件的 <httpRuntime> 节中的 maxRequestLength 参数的默认值是 4096(4 MB)。 结果,默认情况下,不会上载比此值大的文件。 返回页首 解决方案 若要解决此问题,请使用以下方法之一: ? 在 Machine.config 文件中,将 <httpRuntime> 配置节的 maxRequestLength 属性更改为更大的一个值。 这一更改会影响整台计算机。 www.shengfang.org? 在 Web.config 文件中,请重写应用程序的 maxRequestLength 的值。 例如,Web.config 中的下面这一项允许上载小于等于 8 兆字节 (MB) 的文件: <httpRuntime maxRequestLength="8192" /> 在本机上,浏览aspx,此时,ASPNET_WP.EXE进程占用内存空间为内存使用30,948K,当上传一个60.7M的文件后,内存占用变化为91,232K。
字体:大 中 小 |