ASP.NET网站制作之Asp.net文件上传操纵
也许唯一可以让世人留恋Java的理由就剩下它的王牌——跨平台。asp.net|上传在ASP里要上传一个文件是很贫苦的事,必要稻喷鼻老农之类的组件的撑持。在ASP.Net事变就变得复杂了很多。以下面上传图片的例子。
起首声名利用定名空间。usingSystem.IO;
在计划页面拖进一个input(File)控件,并把它作为服务器控件运转。其ID为myFile;然后拖进一个button,给button的单击工夫增加以下代码:
protectedvoidsubmit_Click(objectsender,EventArgse)
{
stringphName=this.txtName.Text;
stringphType=this.ddlType.SelectedValue;
if(this.myFile.PostedFile!=null)
{
stringphotoName1=myFile.PostedFile.FileName;//猎取初始文件名
inti=photoName1.LastIndexOf(".");//获得文件名中最初一个"."的索引
stringnewext=photoName1.Substring(i);//猎取文件扩大名
if(newext!=".gif"&&newext!=".jpg"&&newext!=".jpeg"&&newext!=".bmp"&&newext!=".png")
{
Response.Write("文件格局不准确!");
Response.End();
}
DateTimenow=DateTime.Now;//猎取体系工夫
stringphotoName2=now.Millisecond.ToString()+"_"+myFile.PostedFile.ContentLength.ToString()+newext;//从头为文件定名,工夫毫秒部分+文件巨细+扩大名
myFile.PostedFile.SaveAs(Server.MapPath("photos"+photoName2));//保留文件到路径,用Server.MapPath()取以后文件的相对目次.在asp.net里""必需用""取代
}
}
HtmlInputFile工具与HTML文件输出元素对应。你可用由id属性指定的称号来会见它。它有以下特征:
*PostedFile:上传文件的内容。
*Accept:以逗号界定的MIME范例列表,指定大概提交的文件范例。
*MaxLength:要提交的文件的最长文件名长度(包含路径)。
*Size:用户输出/选择上传文件的文本框宽度。
以下是HTML输出把持的办法与特征:
*FileName:用户盘算机上的完整及格的文件称号。它还包括上传文件的当地路径。
*ContentLength:上传文件的巨细(字节)。
*ContentType:上传文件的MIME内容范例。
*InputStream:前往一个指向上传文件的流(Stream)工具,同意你浏览文件内容。
*SaveAs:便利保留上传文件的内容。
==================相干文章===================
使用ASP.NET向服务器上传文件
文件上传手艺是一个很有用的手艺,有着很普遍的使用,在ASP.NET本身的前一个版本ASP里完成这个功效,就必需利用第三方的组件大概本人开辟组件了,如今,用ASP.NET完成起来就复杂很多了,我们不必要利用任何组件就能够完成上传的功效了。
为了便利解说,我们能够把文件上传分红两品种型:单一文件上传和多文件上传。
单一文件上传
我们先来先容单一文件上传的办法,单一文件上传就对照复杂了,
上面是完成单一文件上传的完全代码:
<%@ImportNamespace="System"%>
<%@ImportNamespace="System.Web.HttpPostedFile"%>
<%@ImportNamespace="System.Web.UI.HtmlControls.HtmlInputFile"%>
<scriptlanguage="VB"runat="server">
SubUpLoad(SrcAsObject,EAsEventArgs)
IfUploadFile.PostedFile.ContentLength=0then
ShowUpLoadFile.innerText="上传失利或文件不存在!"
Else
猎取文件名
dimTemp()asString=Split(UploadFile.PostedFile.FileName,"")
dimFileNameasString=Temp(Temp.Length-1)
保留文件
UploadFile.PostedFile.SaveAs(Server.MapPath(".")&"Files"&FileName)
显现上传了局
ShowUpLoadFile.InnerHtml="文件上传乐成!<br>上传文件名:"&FileName
EndIf
EndSub
</script>
<html>
<body>
<formrunat="server"enctype="multipart/form-data">
<inputtype="file"id="UploadFile"runat="server"size="50"><br>
<asp:buttonrunat="server"Text="当即上传"/>
</form>
<hr><br>
<spanid="ShowUpLoadFile"runat="server"></span>
</body>
</html>
把下面的代码保留成.aspx文件,然后在该文件地点目次下创立一个寄存文件的新目次Files,运转,先感觉一下效果,然后再持续看上面的解说
利用ASP.NET上传文件,必要用到.NET框架的两个类:HttpPostedFile和HtmlInputFile,这两个类地点的定名空间分离是System.Web.HttpPostedFile和System.Web.UI.HtmlControls.HtmlInputFile,以是我们要在文件开首先导进这两个定名空间,
个中的PostedFile暗示上传到服务器的文件,它包括几个经常使用的属性:
ContentLength:文件巨细;
FileName:上传文件的具体路径及文件名;
ContentType:上传文件的文件范例。
字符支解函数Split是用来获得文件名的,由于经由过程PostedFile.FileName取得的是具体的路径及文件名。
多文件上传
所谓的多文件上传就是同时上传多个文件,这个跟单一文件上传年夜多是不异的,分歧的是多文件上传是把一切文件作为一个文件汇合一同上传到服务器的,我们必要的是把这个文件汇合分化成一个个单一的文件,剩下的处置办法就跟单一文件上传一样了。
起首你要晓得要最多同时上传几个文件,然后你就在form之间放几个以下的HtmlInput控件:
<inputtype="file"runat="server"size="50">
注重:这里的HtmlInput控件控件是不必要设置ID的
那怎样在上传到服务器的文件汇合中掏出一个个的文件呢?看上面的代码:
dimiasinteger
Fori=0toRequest.Files.Count-1
‘利用Request.Files()来逐一猎取上传的文件
dimmyFileasHttpPostedFile=Request.Files(i)
这里的myFile就相称于上例中的PostedFile,能够用myFile.FileName取得文件名,etc
这里的处置代码就跟单一文件上传的一样了
Next
如今你已把握了ASP.NET文件上传手艺了,只需天真使用,丑化上传界面,做出好的ASP.NET上传程序了也不是甚么难事了。
=========================================
使用ASP.NET向收集服务器上传文件
很多网站经由过程网页搜集材料,如用户反应及博客文章等。可以搜集文本很不错。可是,我们常常必要搜集更加妥当的要素。比方,很多雇用网站搜集求职者用Word文件提交的简历。尺度HTML撑持文件上传功效,但假如使用ASP.NET上传的话,还能够取得一些附加功效。
输出标签
尺度HTML输出标签撑持文件范例属性,如许就能够向收集服务器上传文件。以下是此标签的格局:
<inputtype="file"name="fileUpload"/>
将输出标签放在HTML表单位素中。列表A中的代码显现ASP.NET页面顶用到的文件上传把持。
在ASP.NET页面中使用上传标签还要别的两个属性:id与runat。id属性按程序会见元素,而runat属性则指明处置元素的地位。runat属性由服务器设定,以是它由收集服务器来处置。别的,HTML中还包括对齐页面项目标别的元素,和一个提交表单的按钮。
文件上传元素为用户供应两个选择上传文件的选项:在输出文本框中输出文件路径,大概选择扫瞄(Browse)按钮从当地文件体系中举行选择。一旦用户指定了文件,再选择提交(Submit)按钮,收集服务器即接受。(必要利用代码来处置哀求和上传的文件。)
用ASP.NET上传
使用ASP.NET上传文件有几种体例,让我们看一看几种情况。最基础的路子是使用上传输出把持特征与办法。以下是HTML输出把持的办法与特征:
*FileName:用户盘算机上的完整及格的文件称号。它还包括上传文件的当地路径。
*ContentLength:上传文件的巨细(字节)。
*ContentType:上传文件的MIME内容范例。
*InputStream:前往一个指向上传文件的流(Stream)工具,同意你浏览文件内容。
*SaveAs:便利保留上传文件的内容。
列表B中的C#言语实例对第一个代码样本举行扩大以处置上传文件。(列表C中是对应的VB.NET实例。)此页面退回以处置上传文件。ContentLength属性可制止上传空文件。FileName使用从文件当地路径中提取文件名的字符串办法在当地保留文件。SaveAs办法将文件保留在收集服务器文件夹中。BtnSubmit按钮用它的指向表双方法的ASP.NETOnServerClick事务来触发上传文件历程。
其代码使用HtmlInputFile和HttpPostedFile类。这些类(及其汇合)的完全路径为:
*System.Web.UI.HtmlControls.HtmlInputFile
*System.Web.HttpPostedFile
在输出文件元素时创建HtmlputFile工具(在我们的例子中为fileUpload)。文件由表单(与HtmlInputFile工具)提交到服务器时则创建HttpPostedFile工具。只要在页面的回传事务中,HttpPostedFile工具才无效。
HtmlInputFile工具与HTML文件输出元素对应。你可用由id属性指定的称号来会见它。它有以下特征:
*PostedFile:上传文件的内容。
*Accept:以逗号界定的MIME范例列表,指定大概提交的文件范例。
*MaxLength:要提交的文件的最长文件名长度(包含路径)。
*Size:用户输出/选择上传文件的文本框宽度。
选择文件后,就能够用代码来保留文件。HtmlinputFile的PostedFile属性把持文件是不是无效的旌旗灯号。在提交文件的页面与处置上传的页面为统一页面时,实例代码事情一般,但情形并不是老是云云。我们来懂得一下怎样在分歧页面中处置文件上传!
在分歧页面中处置上传
我在比来的一个项目中使用一个以Flash为基本的界面来搜集用户反应及上传文件。Flash工具包括在一个HTML文件中,而上传处置与内容则位于另外一个ASP.NET页面内。.NETFramework使这一处置历程变得复杂。
ASP.NETRequest工具中包括由用户提交的统统内容。Request类的Files特征可便利地对用户上传的文件举行会见。Files特征前往一个HttpFileCollection类的实例,它是HttpPostedFile工具的汇合(即由用户提交的文件)。这两个类可便利地处置引进的文件。列表D中的C#实例申明了这一处置历程。(列表E包括对应的VB.NET实例。)
此代码经由过程HttpFileCollection工具来恢复上传文件集,并经由过程一个for轮回,以HttpPostedFile工具处置每一个上传文件,并为每一个工具挪用SaveAs办法,将其保留在收集服务器中。
收集页面可经由过程表单的举动属性挪用剧本。它应当指向ASP.NET页面。列表F中的HTML代码是一个样本。
平安
你应当在收集服务器中创建文件夹,将文件保留在代码指定的目次中。别的,你还要限定上传文件的范例;比方,你要制止歹意代码,年夜型视频,和给服务器形成贫苦的内容。
你能够用文件的MIME范例来限定用户上传的文件范例。HTML尺度中包括一个输出元素的举动属性,你可经由过程包括正当的MIME范例,使用它来限定上传的内容。见列表G。
并非一切的收集用户都撑持属性,利用代码办理计划更加牢靠。列表H中的代码对第一个实例做出修正,使其只承受Word文本。假如上传文件的内容范例为微软Word的MIME范例,则只对文件举行保留。
承受一切文件
自上传输出元素呈现以来,承受文件上传就是一个尺度的收集作法,这没有多年夜的改动。可是,ASP.NET简化了提交文件的历程。经由过程ASP.NET页面,大概尺度的HTML表单,你都能够轻松地处置提交历程,并限定用户上传的内容。
一个很大的类库。应用程序之所以难以跨平台,在于直接调用了特定平台的接口,而一个巨大的类库,就能极大地减少应用程序对平台的依赖。 ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码。 现在主流的网站开发语言无外乎asp、php、asp.net、jsp等。 CGI程序在运行的时候,首先是客户向服务器上的CGI程序发送一个请求,服务器接收到客户的请求后,就会打开一个新的Process(进程)来执行CGI程序,处理客户的请求。CGI程序最后将执行的结果(HTML页面代码)传回给客户。 PHP的源代码完全公开,在OpenSource意识抬头的今天,它更是这方面的中流砥柱。不断地有新的函数库加入,以及不停地更新,使得PHP无论在UNIX或是Win32的平台上都可以有更多新的功能。它提供丰富的函数,使得在程式设计方面有着更好的资源。目前PHP的最新版本为4.1.1,它可以在Win32以及UNIX/Linux等几乎所有的平台上良好工作。PHP在4.0版后使用了全新的Zend引擎,其在最佳化之后的效率,比较传统CGI或者ASP等技术有了更好的表现。 那么,ASP.Net有哪些改进呢? 但是java靠开源打出的一片天地,特别是在微软的垄断下能打开今天的局面还是有它的生命力的。 可以通过在现有ASP应用程序中逐渐添加ASP.NET功能,随时增强ASP应用程序的功能。ASP.NET是一个已编译的、基于.NET的环境,可以用任何与.NET兼容的语言(包括VisualBasic.NET、C#和JScript.NET.)创作应用程序。另外,任何ASP.NET应用程序都可以使用整个.NETFramework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。 现在主流的网站开发语言无外乎asp、php、asp.net、jsp等。 代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。 ASP.net1.1和2.0在程序上的语法也有很大不同,现在2.0属于新出来的,不知道半年后会不会有3.0(说笑一下)。Windows2003系统自动支持ASP和ASP.net环境,不用安装任何程序。Asp.net属于编译语言。ASP的最大不同(ASP属于解释语言)。
页:
[1]