上传文件用到的属性和方法介绍

ASP.NET文件上传
本文介绍如何使用ASP.NET进行文件上传,包括单文件上传、显示文件信息及保存到服务器,以及多文件上传的方法。

    使用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 方法将档案写入磁盘。

 

转载于:https://www.cnblogs.com/microchuan/archive/2006/04/21/381073.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值