当前位置:首页 » 文件管理 » aspnet上传大文件

aspnet上传大文件

发布时间: 2023-04-23 17:15:50

❶ ASP.NET 2.0高级控件之FileUpload控件

应用程序中经常需要允许用户把文件上传到web服务器 尽管在ASP NET X也可以完成该功能 但在ASP NET 中使用FileUpload控件会更简单 该控件让用户更容易地浏览和选择用于上传的文件 它包含一个浏览按钮和用于输入文件名的文本框 只要用户在文本框中输入了完全限定的文件名 无论是直接输入或通过浏览按钮选择 都可以调用FileUpload的SaveAs方法保存到磁盘上差歼尘 除了从WebControl类继承的标准成员 FileUpload控件还公开了几个只读的属性 在表 和表 列出 表 FileUpload控件属性 名 称 类型 读 写 说 明 FileContent Stream × 返回一个指向上传文件的流对象 FileName string × 返回要上传文件的名称 不包含路径信息 HasFile Boolean × 如虚禅果是true 则表示该控件有文件要上传 PostedFile HttpPostedFile × 返回已经上传文件的引用 表 列出了它所公开的只读属性 表 HttpPostedFile属性 名 称 类 型 读 写 说 明 ContentLength integer × 返回上传文件的按字节表示的文改孙件大小 ContentType string × 返回上传文件的MIME内容类型 FileName string × 返回文件在客户端的完全限定名 InputStream Stream × 返回一个指向上传文件的流对象 所有这些属性将在下面的示例中说明 为了查看FileUpload控件在实际中的运用 创建一个FileUploadDemo网站 在页面上添加一个FileUpload控件 然后 添加两个ASP NET按钮 Text属性分别设置为Save和Display ID分别设置为btnSave和btnDisplay 增加两个Label控件 并分别将ID设置为lblMesage和lblDisplay 用<br/>HTML元素分隔这些控件 切换到设计视图 通过双击每个按钮 为它们在代码隐藏文件中创建具有默认名称的Click事件处理程序 完成后的内容文件类似于示例 示例 FileUploadDemo网站的default aspx <%@ Page Language= C# AutoEventWireup= true CodeFile= Default aspx cs Inherits= _Default %><!DOCTYPE PUBLIC //W C//DTD XHTML //EN >< xmlns= ><head runat= server ><title>FileUpload Control</title></head><body><form id= form runat= server ><div><h >FileUpload Control</h ><asp:FileUpload ID= FileUpload runat= server /><br /><asp:Button ID= btnSave runat= server Text= Save OnClick= btnSave_Click /><asp:Button ID= btnDisplay runat= server Text= Display OnClick= btnDisplay_Click /><br /><br /><asp:Label ID= lblMessage runat= server /><asp:Label ID= lblDisplay runat= server /></div></form></body></>

在代码隐藏文件中 添加示例 中高亮显示的代码 非高亮显示的代码由VS 自动创建

示例 FileUploadDemo网站的Default aspx cs

using System;using System Data;using System Configuration;using System Web;using System Web Security;using System Web UI;using System Web UI WebControls;using System Web UI WebControls WebParts;using System Web UI HtmlControls;using System IO; // 使用Stream必需public partial class _Default : System Web UI Page {protected void Page_Load(object sender EventArgs e){}protected void btnSave_Click(object sender EventArgs e){string str = ;if (FileUpload HasFile){try{str += Uploading file: + FileUpload FileName;// 保存文件FileUpload SaveAs( c:\websites\uploads\ + FileUpload FileName);// 显示文件信息str += <br/>Saved As: + FileUpload PostedFile FileName;str += <br/>File Type: + FileUpload PostedFile ContentType;str += <br/>File Length (bytes): + FileUpload PostedFile ContentLength;str += <br/>PostedFile File Name: + FileUpload PostedFile FileName;}catch (Exception ex){str += <br/><b>Error</b><br/>Unable to save c:\websites\uploads\ + FileUpload FileName + <br/> + ex Message;}}else{str = No file uploaded ;}lblMessage Text = str;lblDisplay Text = ;}protected void btnDisplay_Click(object sender EventArgs e){string str = <u>File: + FileUpload FileName + </u><br/> ; if (FileUpload HasFile){try{Stream stream = FileUpload FileContent;StreamReader reader = new StreamReader(stream);string strLine = ;do{strLine = reader ReadLine( );str += strLine;} while (strLine != null);}catch (Exception ex){str += <br/><b>Error</b><br/>Unable to display + FileUpload FileName + <br/> + ex Message;}}else{str = No file uploaded ;}lblDisplay Text = str;lblMessage Text = ;}}高亮显示的using声明对于不使用完全限定命名空间 而使用Stream对象是必须的 在Save按钮的btnSave_Click事件处理程序中 FileUpload控件的HasFile属性用于检测文本框中是否输入了有效的完全限定文件名 如果文本框为空或输入的名称无效 将不会通过检测 并且lblMessage将显示 No file upladed 假定上传了一个有效文件 那么将执行try代码块中的代码 关键语句是调用File Upload控件的SaveAs方法 该方法使用硬编码路径和FileName属性传递一个完全限定的文件名 该语句可能会由于各种原因而失败 包括磁盘空间不足 无效的路径或安全问题(稍后会有更详细的说明) 如果SaveAs方法失败 则执行catch代码块 在lblMessage中显示一个错误信息 包括该异常的Message属性ex Message 如果SaveAs方法执行成功 关于上传文件的多个信息将显示在lblMessage中 这些信息通过FileUpload PostedFile(类型为HttpPostedFile)中的属性获取 Display按钮的Click事件处理程序与前面的类似 只不过它不是显示文件信息 而是显示文件内容 它通过使用FileContent属性获取表现为Stream对象的上传文件的内容 然后这个Stream对象被用于实例化一个StreamReader对象 StreamReader的Read Line方法逐行的遍历文件 然后把合并后的字符串显示在lblDisplay中 当在讨论从客户端上传文件到web服务器时 安全是非常让人关注的 须注意两点 首先 使用这种方式会公开web服务器 从而会有非常大的安全漏洞 为此要特别细心 因为这样不仅可以上传病毒 木马和其他恶意软件 还会存在客户端浏览web服务器目录结构的危险 因此 应该使用硬编码目标目录 至少严格限定在哪里保存上传的文件 另外 要注意的一点是 允许在磁盘写文件所必需的权限 在开发web应用程序时 一般情况下 开发机器同时也是web服务器 特别是使用VS 默认的开发模式 在该模式下使用的是内置的web服务器 并且不通过IIS访问网站而是由文件系统访问网站 这样 永远也不会有权限问题 然而 当网站部署到产品服务器上 且该网站通过IIS和虚拟目录来访问时 就会出现问题 这是因为运行ASP NET的账户必须拥有对用于保存上传文件的目录的写权限 在Windows /XP中 账户的名称是ASPNET 在Windows Server 中 写权限必须分配给IIS_WPG账户组 利用FileUpload控件并结合良好的安全防护 用户可以把自己的文件传送到网站 以丰富网站功能 lishixin/Article/program/net/201311/13538

❷ 我要用asp.net写一个视频上传的代码,可是不知道该怎么写 麻烦知道的帮帮忙哦 谢谢了的

我给你介绍两个上传大文件的组件

Lion.Web.UpLoadMole和AspnetUpload

自己镇升上网搜索一下,不建议用这些插件,建议直接用睁拦ftp上传,如果客户非要这样做也没办法,呵呵,不如ftp快

如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快悉旅胡!

❸ asp.net上传图片iis退出

专门建立一个文件夹,设置web共享,iis里可写。
一般是网目录没有写权限1、设置NetworkService有访问网站目录的权限2、设置Aspnet及Internet来宾帐号对网站上传目录的读写权限设置方法,目录或磁盘右击属性-安全。
ASP.NET的FileUpload控件可用于上传文件到服务器。HoverTreeTop新增了一个“阅图”功能,图片就是用FileUpload上传的。

❹ Asp.net CKFinder 1.4.3 上传大文件问题。在线等

下载个原码来二次开发吧!

❺ 紧急求救!!!ASP.net 上传桌面上的文件报错,权限不够!望众高手前来相救,小弟不胜感激!!!

添加文件夹user用户权限及aspnet权限

❻ ASP.NET入门教程 8.5 上传图片[1]

ASP NET 提供了一种从浏览器向服务器上传图片(或其他文件)的简单方法 虽然这个内容严格地说不属于数据库的范畴 但我们还是在这里进行介绍 工具条提供FileUpload工具 将该工具拖放到页面上时会产生一个文本框和一个浏览按钮 作为设计人员 必须为用户添加一个实际执行上传功能的按钮

在该按钮的Click事件过程中 最简单的操作如下代码所示 用户指示的文件(通过输入或浏览)将被传送到服务器

FileUpload SaveAs(FileUpload FileName)

但这段代码过于简单 因为上传的文件会保存到Web站点的根目录下 可 以在文件名的前面添加一个字符串 由该字符串引导上传的文件存入服务器上恰当的文件夹 注意当在浏览器中打开上传页面的时候 可以查看其源代码 但这并不会暴露服务器的路径 下面的代码将文件存放到MyImageFolder文件夹内

FileUpload SaveAs( & FileUpload FileName)

在调用FileUpload SaveAs方法的时候 ASP NET 将创建一个名为FileUpload PostedFile的对象 该对象带有多个与上传操作相关尺李的属性 最常用的是FileName和ContentLength 因此如果创建了一个名为Label l的标签 那么可以在它的文本中亏扰显示正在上传的文件 如下所示

FileUpload SaveAs( C:BegASPNET WroxUnitedMatchImages &

FileUpload FileName)

Label Text= File uploaded to WroxUnited from:<br/> &_

FileUpload PostedFile FileName

如果用户在选择文件之前单击上传按钮该怎么办?可以通过IF THEN语句避免这个问题 如下所示(类似IF THEN的代码结构将在第 章介绍)

If FileUpload HasFile Then

FileUpload SaveAs( C:BegASPNET WroxUnitedMatchImages &

FileUpload FileName)

销困旦 Else

Label Text= Please select a file before clicking the Upload button

End If

ASP NET 入门教程完整版

lishixin/Article/program/net/201311/14833

❼ 上传的大文件

基于WEB的文件上传可以使用FTP和HTTP两种协议,用FTP的话虽然传输稳定,但安全性是个严重的问题,而且FTP服务器读用户库获取权限,这样对于用户使用来说还是不太方便。 剩下只有HTTP。在HTTP中有3种方式,PUT、WEBDAV、RFC1867,前2种方法不适合大文件上传,基本上我们使用的web上传都是基于RFC1867标准的HTML中基于表单的文件上传。
RFC1867:
1.HTML表单
现有的HTML规范为INPUT元素的TYPE属性定义了八种可能的值,分别是:CHECKBOX, HIDDEN,MAGE,PASSWORD,RADIO,RESET,SUBMIT,TEXT。 另外,当表单采用POST方式的时候,表单默认的具有“application/x-www-form-urlencoded”的ENCTYPE属性。
RFC1867标准对HTML做出了两处修改:
(1)为INPUT元素的TYPE属性增加了一个FILE选项。
(2)INPUT标记可以具有ACCEPT属性,该属性能够指定可被上传的文件类型或文件格式列表。
另外,本标准还定义了一种新的MIME类型:multipart/form-data,以及当处理一个带有ENCTYPE=multipart/form-data 并且/或含有<INPUT type=file>的标记的表单时所应该采取的行为。
举例来说,当HTML表单作者想让用户能够上传一个或更多的文件时,他可以这么写:
<FORM ENCTYPE=multipart/form-data ACTION=_URL_ METHOD=POST>
File to process:
<INPUT NAME=userfile1 TYPE=file>
<INPUT TYPE=submit VALUE=Send File>
</FORM>
HTML DTD里所需要做出的改动是为InputType实体增加一个选项。此外,我们也建议用一系列用逗号分隔的文件类型来作为INPUT标记的ACCEPT属性。
... (其他元素) ...
<!ENTITY % InputType (TEXT | PASSWORD | CHECKBOX |
RADIO | SUBMIT | RESET |
IMAGE | HIDDEN | FILE )>
<!ELEMENT INPUT - 0 EMPTY>
<!ATTLIST INPUT
TYPE %InputType TEXT
NAME CDATA #IMPLIED -- required for all but submit and reset
VALUE CDATA #IMPLIED
SRC %URI #IMPLIED -- for image inputs --
CHECKED (CHECKED) #IMPLIED
SIZE CDATA #IMPLIED --like NUMBERS,
but delimited with comma, not space
MAXLENGTH NUMBER #IMPLIED
ALIGN (top|middle|bottom) #IMPLIED
ACCEPT CDATA #IMPLIED --list of content types
>
... (其他元素) ...
2.文件传输延迟
在某些情况下,在确实准备接受数据前,服务器先对表单数据中的某些元素(比如说用户名,账号等)进行验证是推荐的做法。但是,经过一定的考虑后,我们认为如果服务器想这样做的话,最好是采用一系列的表单,并将前面所验证过的数据元素作为“隐藏”字段传回给客户端,或者是通过安排表单使那些需要验证的元素先显示出来。这样的话,那些需要做复杂的应用的服务器可以自己维持事务处理的状态,而那些简单的应用的则可以实现得简单些。
HTTP协议可能需要知道整个事务处理中的内容总长度。即使没有明确要求,HTTP客户端也应该提供上传的所有文件的内容总长度,这样一个繁忙的服务器就能够判断文件的内容是否是过大以至于将不能完整地处理,从而返回一个错误代码并关闭该连接,而不用等到接受了所有的数据才进行判断。一些现有的CGI应用对所有的POST事务都需要知道内容总长度。
如果INPUT标记含有一个MAXLENGTH属性,客户端可以将这个属性值看作是服务器端所能够接受的传送文件的最大字节数。在这种情况下,服务器能够在上传开始前,提示客户端在服务器上有多少空间可以用来进行文件上传。但是应该引起注意的是,这仅仅是一个提示,在表单被创建后和文件上传前,服务器的实际需求可能会发生改变。
在任何情况下,如果接受的文件过大的话,任何一个HTTP服务器都有可能在文件传输的过程中中断传输。
3.传输二进制数据的其他解决办法
有些人曾经建议使用一种新的MIME类型aggregate,比如说aggregate/mixed 或是content-transfer-encoding 包来描述那些不确定长度的二进制数据,而不是靠分解为多个部分来表示。虽然我们并不反对这么做,但这需要增加额外的设计和标准化工作来让大家接受并理解aggregate。 从另一方面来说,分解为多部分的机制工作得很好,能够非常简单的在客户发送端和服务器接受端加以实现,而且能像其他一些综合处理二进制数据的方式一样高效率地工作。
RFC上传
1.一次性得到上传的数据,然后分析处理。
看了N多代码之后发现,无组件程序和一些COM组件都是使用Request.BinaryRead方法。一次性得到上传的数据,然后分析处理。这就是为什么上传大文件很慢的原因了,IIS超时不说,就算几百M文件上去了,分析处理也得一阵子。
2.一边接收文件,一边写硬盘。
了解了一下国外的商业组件,比较流行的有Power-Web,AspUpload,ActiveFile,ABCUpload,aspSmartUpload,SA-FileUp。其中比较优秀的是ASPUPLOAD和SA-FILE,他们号称可以处理2G的文件(SA-FILE EE版甚至没有文件大小的限制),而且效率也是非常棒,难道编程语言的效率差这么多?查了一些资料,觉得他们都是直接操作文件流。这样就不受文件大小的制约。但老外的东西也不是绝对完美,ASPUPLOAD处理大文件后,内存占用情况惊人。1G左右都是稀松平常。至于SA-FILE虽然是好东西但是破解难寻。然后发现2款.NET上传组件,Lion.Web.UpLoadMole和AspnetUpload也是操作文件流。但是上传速度和CPU占用率都不如老外的商业组件。
做了个测试,LAN内传1G的文件。ASPUPLOAD上传速度平均是4.4M/s,CPU占用10-15,内存占用700M。SA-FILE也差不多这样。而AspnetUpload最快也只有1.5M/s,平均是700K/s,CPU占用15-39,测试环境: PIII800,256M内存,100M LAN。我想AspnetUpload速度慢是可能因为一边接收文件,一边写硬盘。资源占用低的代价就是降低传输速度。但也不得不佩服老外的程序,CPU占用如此之低.....。
上传问题
我们在上传大文件时都遇到过这样或那样的问题。设置很大的maxRequestLength值并不能完全解决问题,因为会block直到把整个文件载入内存后,再加以处理。实际上,如果文件很大的话,我们经常会见到Internet Explorer显示 The page cannot be displayed - Cannot find server or DNS Error,好像是怎么也catch不了这个错。为什么?因为这是个client side错误,server side端的Application_Error是处理不到的。
解决的方法是利用隐含的HttpWorkerRequest,用它的GetPreloadedEntityBody 和 ReadEntityBody方法从IIS为建立的pipe里分块读取数据。Chris Hynes为我们提供了这样的一个方案(用HttpMole),该方案除了允许你上传大文件外,还能实时显示上传进度。
Lion.Web.UpLoadMole和AspnetUpload 两个.NET组件都是利用的这个方案。
方案原理:
利用HttpHandler实现了类似于ISAPI Extention的功能,处理请求(Request)的信息和发送响应(Response)。
方案要点:
1. httpHandler or HttpMole
a.分块读取和写入数据
b.实时跟踪上传进度更新meta信息
2. 利用隐含的HttpWorkerRequest用它的GetPreloadedEntityBody 和 ReadEntityBody方法处理文件流
3. 自定义Multipart MIME 解析器。
自动截获MIME分割符。
将文件分块写如临时文件。
实时更新Appliaction 状态(ReceivingData, Error, Complete) 。

❽ 关于asp.net 的几个名词解释,求助。。

1.Request对象
作用是与客户端交互,收集客户端的Form、Cookies、超链接,或者收集服务器端的环境变量。
request对象是从客户端向服务器发出请求,包括用户提交的信息以及客户端的一些信息。客户端可通过HTML表单或在网页地址后面提供参数的方法提交数据,然后通过request对象的相关方法来获取这些数据。request的各种方法主要用来处理客户端浏览器提交的请求中的各项参数和选项。

Request对象的语法如下:
Request[.collectionlpropertylmethod](variable)
collection集合
clientcertificate 得到在HTTP请求中传递在客户端认证域的值
cookies 使用此集合,可得到cookies值
form 得到form对象中元素的值
querystring 得到变量的值
servervariables 得到预置的环境变量的值
property属性
totalbytes (只读)指定从客户端传递总字节数
buffer 表明页面输出是否有缓冲
cachecontrol 决定代理服务器是否能够对asp的输出进行快取
property属性
charset 字符集
contenttype 指定response的HTTP内容类型
expires 定义一个浏览器缓存中的页面在多长时间后过期
expiresabsolute 定义一个浏览器缓存中的页面什么日期时间后过期
isclientconnected 用户是否连接到服务器
pics 设置pics-label response标题的值,标示pics内容等级
status 由服务器返回的状态行
说明:
1、其中collection表示集合,它和数组很类似,是由若干元素组成的集合。不过数组一般只能用索引(下标)来引用每一个元素,而集合不仅可以用索引来引用每一个元素的值,还可以用元素的名称来引用,如Request.Form("txtA")。事实上,后者是常用的方法。
2、variable又称参数,它就是要获取的元素的名称,可以是字符串常量或字符串变量。例如,对表单信息来说,variable就是每一个表单元素的名称。
3、“【”和“】”之间的参数可以省略,如Request("txtA")。此时因为没有指定集合,所以ASP将会依次在QueryString、Form、Cookies、ServerVariables、ClientCertificate这5种集合中检查是否有信息传入。如果有信息传入,则会返回获取的信息。
4、请注意上面的第二个例子,其中前面的strB是定义的一个变量名称,而后面的strB则是集合中一个元素的名称,两者不是一回事。
method方法
binaryread 得到从客户端传给服务器端的数据
1.Request对象是ASP中常用的对象,用于获取客户端的信息,可以使用Request对象访问任何基于HTTP请求传递的所有信息。通过Request对象能够获得客户端发送给服务器的信息,不能将服务器端的数据发送给客户端的浏览器。Request对象的属性TotalBytes的功能是取得客户端响应数据字节大小。Request对象的方法BinaryRead的功能是以二进制方式读取客户端post的数据。

request对象有五个集合,下面予以介绍:
QueryString
:用以获取客户端附在url地址后的查询字符串中的信息。
例如:stra=Request.QueryString ["strUserld"]
Form
:用以获取客户端在FORM表单中所输入的信息。(表单的method属性值需要为POST)
例如:stra=Request.Form["strUserld"]
Cookies
:用以获取客户端的Cookie信息。
例如:stra=Request.Cookies["strUserld"]
ServerVariables
:用以获取客户端发出的HTTP请求信息中的头信息及服务器端环境变量信息。
例如:stra=Request.ServerVariables["REMOTE_ADDR"],返回客户端IP地址
ClientCertificate
:用以获取客户端的身份验证信息
例如:stra=Request.ClientCertificate["VALIDFORM"],对于要求安全验证的网站,返回有效起始日期。

2session对象

用于存储特定的用户会话所需的信息 。 Session对象的引入是为了弥补HTTP协议的不足,HTTP协议是一种无状态的协议。
Session中文是“会话”的意思,在ASP中代表了服务器与客户端之间的“会话”。Session的作用时间从用户到达某个特定的Web页开始,到该用户离开Web站点,或在程序中利用代码终止某个Session结束。引用Session 则可以让一个用户访问多个页面之间的切换也会保留该用户的信息。
系统为每个访问者都设立一个独立的Session对象,用以存储Session变量,并且各个访问者的Session对象互不干扰。
Session与Cookie是紧密相关的。 Session的使用要求用户浏览器必须支持Cookie,如果浏览器不支持使用Cookie,或者设置为禁用Cookie,那么将不能使用Session。
Session信息对客户来说,不同的用户用不同的Session信息来记录。当用户启用Session时,ASP自动产生一个SessionID.在新会话开始时,服务器将SessionID当做cookie存储在用户的浏览器中。
session语法:
session.集合∣属性∣方法
举例:
<html>
<head>
<title>学好session加油</title>
</head>
<body>
<%
session("greeting")="ASP“
Response.write(session("greeting"))
%>
</body>
</html>
Session对象的集合、属性、方法、事件
名称 描述
Contents集合 包含所有通过脚本命令添加到应用程序中的数据项
SessionID属性 用来标识每一个Session对象
TimeOut属性 用来设置Session会话的超时时间(以分钟表示)
Abandon方法 强行删除当前会话的Session对象,释放系统资源
Session_OnStart事件 建立Session对象时所激发的事件
Session_OnEnd事件 结束Session对象时所激发的事件
StaticObjects集合 包含所有通过<OBJECT>标记添加到应用程序中的对象

3

CompareValidator 控件用于将由用户输入到输入控件的值与输入到其他输入控件的值或常数值进行比较。

注释:如果输入控件为空,则不会调用任何验证函数,并且验证将成功。使用 RequiredFieldValidator 控件使字段成为必选字段。
属性
属性 描述
BackColor CompareValidator 控件的背景颜色。
ControlToCompare 要与所验证的输入控件进行比较的输入控件。
ControlToValidate 要验证的输入控件的 ID。
Display 验证控件中错误信息的显示行为。

合法值是:

None 验证消息从不内联显示。
Static 在页面布局中分配用于显示验证消息的空间。
Dynamic 如果验证失败,将用于显示验证消息的空间动态添加到页面。

EnableClientScript 布尔值,规定是否启用客户端验证。
Enabled 布尔值,规定是否启用验证控件。
ErrorMessage 当验证失败时在 ValidationSummary 控件中显示的文本。

注释:如果未设置 Text 属性,此文本将显示在验证控件中。

ForeColor 控件的前景颜色。
id 控件的唯一 ID。
IsValid 布尔值,指示由 ControlToValidate 指定的输入控件是否通过验证。
Operator 要执行的比较操作的类型。

运算符是:

Equal
GreaterThan
GreaterThanEqual
LessThan
LessThanEqual
NotEqual
DataTypeCheck

runat 规定控件是服务器控件。必须设置为 "server"。
Text 当验证失败时显示的消息。
Type 规定要对比的值的数据类型。

类型有:

Currency
Date
Double
Integer
String

ValueToCompare 一个常数值,该值要与由用户输入到所验证的输入控件中的值进行比较。
实例
CompareValidator
在此例中,我们在 .aspx 文件中声明了两个 TextBox 控件,一个 Button 控件,以及一个 CompareValidator 控件。如果验证失败,将在 CompareValidator 控件中使用黄色背景红色文本显示 "Validation Failed!"。
CompareValidator 2
在此例中,我们在 .aspx 文件中声明了两个 TextBox,一个 ListBox 控件,一个 Button 控件,以及一个 CompareValidator 控件。check_operator() 函数把 ListBox 控件中选取的运算符设置为 CompareValidator 控件的运算符,然后对 CompareValidator 控件进行验证。如果验证失败,将在 CompareValidator 控件中使用黄色背景和红色文本显示 "Validation Failed!"。

4.FileUpload控件
FileUpload 控件显示一个文本框控件和一个浏览按钮,使用户可以选择客户端上的文件并将它上载到 Web 服务器。用户通过在控件的文本框中输入本地计算机上文件的完整路径(例如,C:\MyFiles\TestFile.txt)来指定要上载的文件。用户也可以通过单击“浏览”按钮,然后在“选择文件”对话框中定位文件来选择文件。
用户选择要上载的文件后,FileUpload 控件不会自动将该文件保存到服务器。您必须显式提供一个控件或机制,使用户能提交指定的文件。例如,可以提供一个按钮,用户单击它即可上载文件。为保存指定文件所写的代码应调用 SaveAs 方法,该方法将文件内容保存到服务器上的指定路径。通常,在引发回发到服务器的事件的事件处理方法中调用 SaveAs 方法。
在文件上传的过程中,文件数据作为页面请求的一部分,上传并缓存到服务器的内存中,然后再写入服务器的物理硬盘中。
有三个方面需要注意:
1.确认是否包含文件
在调用 SaveAs 方法将文件保存到服务器之前,使用 HasFile 属性来验证 FileUpload 控件确实包含文件。若 HasFile 返回 true,则调用 SaveAs 方法。如果它返回 false,则向用户显示消息,指示控件不包含文件。不要通过检查PostedFile 属性来确定要上载的文件是否存在,因为默认情况下该属性包含 0 字节。因此,即使 FileUpload 控件为空,PostedFile 属性仍返回一个非空值。
2.文件上传大小限制
默认情况下,上传文件大小限制为 4096 KB (4 MB)。可以通过设置 httpRuntime 元素的 maxRequestLength 属性来允许上载更大的文件。若要增加整个应用程序所允许的最大文件大小,请设置 Web.config 文件中的 maxRequestLength 属性。若要增加指定页所允许的最大文件大小,请设置 Web.config 中 location 元素内的 maxRequestLength 属性。
上载较大文件时,用户也可能接收到以下错误信息:
aspnet_wp.exe (PID: 1520) was recycled because memory consumption exceeded 460 MB (60 percent of available RAM).
以上信息说明,上传文件的大小不能超过服务器内存大小的60%。这里的60%是Web。config文件的默认配置,是<processModel>配置节中的 memoryLimit 属性默认值。虽然可以修改,但是如果上传文件越大,成功几率越小,不建议使用。
3.上传文件夹的写入权限
应用程序可以通过两种方式获得写访问权限。您可以将要保存上载文件的目录的写访问权限显式授予运行应用程序所使用的帐户。您也可以提高为 ASP.NET 应用程序授予的信任级别。若要使应用程序获得执行目录的写访问权限,必须将 AspNetHostingPermission 对象授予应用程序并将其信任级别设置为 AspNetHostingPermissionLevel.Medium 值。提高信任级别可提高应用程序对服务器资源的访问权限。请注意,该方法并不安全,因为如果怀有恶意的用户控制了应用程序,他(她)也能以更高的信任级别运行应用程序。最好的做法就是在仅具有运行该应用程序所需的最低特权的用户上下文中运行 ASP.NET 应用程序。

FileUpload控件的常用属性:

属性
数据类型
说明

FileBytes
byte[]
获取上传文件的字节数组

FileContent
Stream
获取指定上传文件的Stream对象

FileName
String
获取上传文件在客户端的文件名称

HasFile
Bool
获取一个布尔值,用于表示FileUpload控件是否已经包含一个文件

PostedFile
HttpPostedFile
获取一个与上传文件相关的HttpPostedFile对象,使用该对象可以获取上传文件的相关属性

可以通过3种方法访问上传文件:
1.通过FileBytes属性。该属性将上传文件数据置于字节数组中,遍历该数组,则能够以字节方式了解上传文件的内容。
2.通过FileContent属性。调用该属性可以获得一个指向上传文件的Stream对象。可以使用该属性读取上传文件数据,并使用FileBytes属性显示文件内容。
3.通过PostedFile属性。调用该属性可以获得一个与上传文件相关的HttpPostedFile对象,使用该对象可以获得与上传文件相关的信息。例如,调用HttpPostedFile对象的ContentLength,可以获得上传文件大小;调用HttpPostedFile对象的ContentType属性,可以获得上传文件的类型;调用HttpPostedFile对象的FileName属性,可以获得上传文件在客户端的完整路径(调用FileUpload控件的FileName属性,仅能获得文件名)。

5.DataAdapter
表示一组 SQL 命令和一个数据库连接,它们用于填充 DataSet和更新数据源。 命名空间:System.Data.Common
程序集:System.Data(在 system.data.dll 中)
语法 public class DataAdapter : Component, IDataAdapter
DataAdapter 用作 DataSet 和数据源之间的桥接器以便检索和保存数据。DataAdapter 通过映射Fill(这更改了 DataSet 中的数据以便与数据源中的数据相匹配)和Update(这更改了数据源中的数据以便与 DataSet 中的数据相匹配)来提供这一桥接器。
如果所连接的是 SQL Server 数据库,则可以通过将SqlDataAdapter与关联的SqlCommand和SqlConnection对象一起使用,从而提高总体性能。对于支持 OLE DB 的数据源,请使用 DataAdapter 及其关联的OleDbCommand和 OleDbConnection 对象。对于支持 ODBC 的数据源,请使用 DataAdapter 及其关联的OdbcCommand和OdbcConnection对象。对于 Oracle 数据库,请使用 DataAdapter 及其关联的OracleCommand和OracleConnection对象。
当创建 DataAdapter 的实例时,读/写属性将被设置为初始值。有关这些值的列表,请参见 DataAdapter 构造函数

这些都出自网络。其实我也不懂。能帮一点帮一点吧。

❾ ASP.NET中上传并读取Excel文件数据示例

如何打开Excel数据库文件,想必有很多朋友都不清楚吧,下面通过一个简单的例子,实现读取Excel数据文件

在CSDN中,经常有人问如何打开Excel数据库文件。本文通过一个简单的例子,实现读取Excel数据文件。
首先,创建一个Web应用程序项目,在Web页中添加一个DataGrid控件、一个文件控件和一个按钮控件。
代码如下:
<INPUT
id="File1"
type="file"
name="File1"
runat="server">
<asp:Button
id="Button1"
runat="server"
Text="Button"></asp:Button>
<asp:DataGrid
id="DataGrid1"
runat="server"></asp:DataGrid>
在代码视图中首先导入OleDb命名空间:
using
System.Data.OleDb;
在按钮的单击事件中输入如下代码:
代码如下:
string
strPath="c://test//"
+
DateTime.Now.ToString("yyyyMMddhhmmss")
+
".xls";
File1.PostedFile.SaveAs(strPath);
string
mystring="Provider
=
Microsoft.Jet.OLEDB.4.0
;
Data
Source
=
'"+
strPath
+"';Extended
Properties=Excel
8.0";
OleDbConnection
cnnxls
=
new
OleDbConnection
(mystring);
OleDbDataAdapter
myDa
=new
OleDbDataAdapter("select
*
from
[Sheet1$]",cnnxls);
DataSet
myDs
=new
DataSet();
myDa.Fill(myDs);
DataGrid1.DataSource=myDs.Tables[0];
DataGrid1.DataBind();
其中C:/test对ASPNET用户要有读写的权限.

热点内容
关闭androidstudio 发布:2025-02-14 03:53:42 浏览:18
安卓脚本一键打板 发布:2025-02-14 03:50:16 浏览:866
我的世界租赁服务器会被封ip吗 发布:2025-02-14 03:46:05 浏览:982
数据库附 发布:2025-02-14 03:44:43 浏览:837
安卓系统解不了锁怎么办 发布:2025-02-14 03:44:35 浏览:552
怎么查询信用卡密码 发布:2025-02-14 03:42:04 浏览:318
studio外贸服装直播脚本 发布:2025-02-14 03:34:16 浏览:453
python集合运算符 发布:2025-02-14 03:06:18 浏览:205
pic编译软件 发布:2025-02-14 03:01:04 浏览:984
反编译在编译 发布:2025-02-14 02:55:36 浏览:418