HttpPostedFile和HtmlInputFile有什么区别

HttpPostedFile和HtmlInputFile有什么区别这两个有什么区别
怎么两个不可以进行转换

第1个回答  推荐于2016-01-27
使用ASP.NET 制作一个可以存放Client 端档案的网页相当容易,因为ASP.NET 里就有提供我们将Client 端档案传至Server 端的对象,这个对象就是HtmlInputFile 对象。HtmlInputFile 对象必须存在窗体中,而且窗体<Form> 标注中必须加入设定Enctype="Multipart/Form-Data" 属性才可使用。HtmlInputFile 对象的语法如下所示:

<Input Type="File" Id="被程序所控制的名称" Runat="Server">

当一个档案传送到Server 端后,接收和处理的是HtmlInputFile 对象的PostedFile 属性。PostedFile 属性的型态是HttpPostedFile 对象类别,其常用属性如下表所示:
属性 说明 型态
ContentLength 传回上传文件的长度单位byte Integer

ContentType 传回上传文件的类型 String

FileName 传回client端上传文件的名称,
具有完整的路径如c:\aa\aa.txt String

其常用方法如下表所示:
方法 说明 语法
SaveAs() 将客户端上传的文件存在服务器的磁盘中 SaveAs(ByVal Filename As String )

基本档案上传
下列范例使用HtmlInputFile 对象的基本用法,分别印出档案的名称、大小、类型:

<Html>
<Form Enctype="Multipart/Form-Data" Runat="Server">
<Input Type="File" Id="UpLoad" Runat="Server">
<Asp:Button Id="Button1" Text="OK" OnClick="Button1_Click"
Runat="Server" /><br>
<Asp:Label Id="Label1" Runat="Server" />
</Form>
<Script Language="VB" Runat="Server">
Sub Button1_Click(Sender As Object,e As Eventargs)
Dim strContent As String
If UpLoad.PostedFile.ContentLength<0 Then
Label1.Text="上传失败"
Else
strContent="文件名称:" & UpLoad.PostedFile.FileName
strContent=strContent & "<br>档案大小:" & _
Cstr(UpLoad.PostedFile.ContentLength) & "Bytes"
strContent=strContent & "<br>档案类型:" &
UpLoad.PostedFile.ContentType
End If
Label1.Text=strContent
End Sub
</Script>
</Html>

存入磁盘
上传档案后若要写入磁盘中也相当容易,只要使用PostedFile 的SaveAs 方法即可。档案写入时若直接将PostedFile.FileName 属性来当文件名写入会有问题,因为FileName 属性包含有档案的路径名称,所以必须先将档案的路径分开。下列范例使用Split 函数来取得文件名称,并将档案存放到网页所在的目录:

<Html>
<Form Enctype="Multipart/Form-Data" Runat="Server">
<Input Type="File" Id="UpLoad" Runat="Server">
<Asp:Button Id="Button1" Text="OK" OnClick="Button1_Click"
Runat="Server" /><br>
<Asp:Label Id="Label1" Runat="Server" />
</Form>
<Script Language="VB" Runat="Server">
Sub Button1_Click(Sender As Object,e As Eventargs)
Dim strContent As String
If UpLoad.PostedFile.ContentLength>0 Then
strContent="文件名称:" & UpLoad.PostedFile.FileName
strContent=strContent & "<br>档案大小:" &
Cstr(UpLoad.PostedFile.ContentLength) & "Bytes"
strContent=strContent & "<br>档案类型:" &
UpLoad.PostedFile.ContentType
Dim Temp() As String = Split(UpLoad.PostedFile.FileName, "\" )
Dim Name As String = Temp(Temp.Length-1)
UpLoad.PostedFile.SaveAs(Server.MapPath(".") & "\" & Name)
Label1.Text=strContent
Else
Label1.Text="上传失败"
End If
End Sub
</Script>
</Html>

Split 函数会将一个字符串以我们设定的条件为分隔,并将分段后的字符串存至一个字符串数组中;所以我们只要以"\" 为条件来分隔档案,在字符串数组中的最后一个元素即为文件名称。

多档上传
我们也可以一次上传多个档案。管理档案的对象是Request 对象的Files 属性,它的型别是HttpFileCollection 集合对象类别,它的项目成员是HttpPostedFile 类别对象。HttpFileCollection型别变量的常用属性如下表所示:
属性 说明 型态
ALL 传回全部的HttpPostedFile类型对象 HttpPostedFile()

AllKeys 传回全部的HtmlInputFile控件的名称 String()

Item 以HtmlInputFile 控件的名称传回 Item(String)As HttpPostedFile
Item(Integer)As HttpPostedFile

其常用方法如下表所示:
方法 说明 参数
Get 以HtmlInputFile对象名称或索引传回 Get(String)As

HttpPostedFile对象 HttpPostedFile
Get(Integer)As
HttpPostedFile

GetKey 以索引值在集合中传回HttpPostedFile对象 GetKey(Integer)As
HttpPostedFile

下列范例中我们放了两个HtmlInputFile 对象,并上传两个档案:

<Html>
<Form Enctype="Multipart/Form-Data" Runat="Server">
<Input Type="File" Id="UpLoad1" Runat="Server"><br>
<Input Type="File" Id="UpLoad2" Runat="Server">
<Asp:Button Id="Button1" Text="OK" OnClick="Button1_Click"
Runat="Server"/><br>
<Asp:Label Id="Label1" Runat="Server"/>
</Form>
<Script Language="VB" Runat="Server">
Sub Button1_Click(Sender As Object,e As EventArgs)
Dim shtI As short
Dim strContent As String
Dim Files As HttpFileCollection
Files=Request.Files
For shtI=0 To Files.Count-1
If Files.Item(shtI).ContentLength>0 Then
strContent=strContent & "第" & Cstr(shtI+1) & "个档案上传对象
<br>"
strContent=strContent & "文件名称:" & Files.Item(shtI).FileName
& "<br>"
strContent=strContent & "档案大小:" &
Cstr(Files.Item(shtI).ContentLength)_
& "Byte<br>"
strContent=strContent & "档案类型:" &
Files.Item(shtI).ContentType & "<p>"
Dim Temp() As String = Split( Files.Item(shtI).FileName, "\")
Dim Name As String = Temp(Temp.Length-1)
Files.Item(shtI).SaveAs(Server.MapPath(".") & "\" & Name)
End If
Next
Label1.Text=strContent
End Sub
</Script>
</Html>

上述范例中我们先定义一个HttpFileCollection 类型变量Files,并将Request.Files 属性的内容放到Files 变量中。再使用For....Next 循环将档案信息加入strContent 变量中,再以Split 函数将档案路径和文件名称分开并且存到一数组,因数组的最后一个元素即为文件名称,因此个别取出后使用HttpPostedFile 对象的SaveAs 方法将档案写入磁盘。本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网