(華版)
以前要在ASP里上载文件真的要写一大堆程序。。。比如说把文件分段转换成Base64然后才上载到服务器,而在服务器那边由要从Base64转会原本的byte值才可以分段写如文件中。但是在ASP.NET里就完全只需用一行代码加一个HtmlInputFile控件就能做完这些复杂的程序。
而要注意的就是紧记在包含HtmlInputFile控件的Form里多添加一个enctype的属性,enctype="multipart/form-data";然后再用HtmlInputFile控件里的PostedFile.SaveAs方法来上载文件就可以了。
<
form
id
="Form1"
method
="post"
runat
="server"
enctype
="multipart/form-data"
>
</ form >
</ form >
'
声明变量
Dim filename As String
Dim data() As String
Try
' 检查所选文件大小
If PostFileName.PostedFile.ContentLength = 0 Then
' 显示上载结果
Label3.Text = " 上载失败!"
Else
' 显示所选文件资料
Label2.Text = " 文件大小: " & PostFileName.PostedFile.ContentLength & " bytes<br>"
Label2.Text = Label2.Text & " 文件类型: " & PostFileName.PostedFile.ContentType & " <br>"
Label2.Text = Label2.Text & " 文件名称: " & PostFileName.PostedFile.FileName & " <br>"
' 读取文件名称
data = Split (PostFileName.PostedFile.FileName, " \ " )
' 上载文件到服务器
PostFileName.PostedFile.SaveAs(Server.MapPath( " . " ) & " \ " & data( UBound (data)))
' 显示上载结果
With Label3
.Text = " 上载成功!"
.ForeColor = Color.DarkGreen
End With
End If
Catch ex As Exception
' 显示错误讯息
With Label3
.Text = " Error: " & ex.Message
.ForeColor = Color.Red
End With
End Try
Dim filename As String
Dim data() As String
Try
' 检查所选文件大小
If PostFileName.PostedFile.ContentLength = 0 Then
' 显示上载结果
Label3.Text = " 上载失败!"
Else
' 显示所选文件资料
Label2.Text = " 文件大小: " & PostFileName.PostedFile.ContentLength & " bytes<br>"
Label2.Text = Label2.Text & " 文件类型: " & PostFileName.PostedFile.ContentType & " <br>"
Label2.Text = Label2.Text & " 文件名称: " & PostFileName.PostedFile.FileName & " <br>"
' 读取文件名称
data = Split (PostFileName.PostedFile.FileName, " \ " )
' 上载文件到服务器
PostFileName.PostedFile.SaveAs(Server.MapPath( " . " ) & " \ " & data( UBound (data)))
' 显示上载结果
With Label3
.Text = " 上载成功!"
.ForeColor = Color.DarkGreen
End With
End If
Catch ex As Exception
' 显示错误讯息
With Label3
.Text = " Error: " & ex.Message
.ForeColor = Color.Red
End With
End Try
整体来说,最为麻烦的也不过是要从PostedFile.FileName里读取真整的文件名称(不包括括file path);不过这也大可用以下的简短代码来完成。
'
读取文件名称
data = Split (PostFileName.PostedFile.FileName, " \ " )
' 文件名称
Debug. Print data( UBound (data))
data = Split (PostFileName.PostedFile.FileName, " \ " )
' 文件名称
Debug. Print data( UBound (data))
如果要上载多个文件(为可更有效的重用代码),那可以用Request.File来读取每一个所选的文件名称;就如以下的代码。
'
声明变量
Dim lIndex As Integer
Dim lCount As Integer
Dim hpf As HttpPostedFile
Dim filename As String
Dim data() As String
Try
' 读取所有要上载文件的数目
lCount = Request.Files.Count
' 读取每一个上载文件的资料
For lIndex = 0 To lCount - 1
' 读取第N个上载文件的资料
hpf = Request.Files(lIndex)
' 检查所选文件大小
If hpf.ContentLength = 0 Then
' 显示所选文件资料
Label2.Text = Label2.Text & " <br> " & " 文件大小: " & hpf.ContentLength & " bytes<br>"
Label2.Text = Label2.Text & " 文件类型: " & hpf.ContentType & " <br>"
Label2.Text = Label2.Text & " 文件名称: " & hpf.FileName & " <br>"
' 读取文件名称
data = Split (hpf.FileName, " \ " )
' 上载文件到服务器
PostFileName.PostedFile.SaveAs(Server.MapPath( " . " ) & " \ " & data( UBound (data)))
' 显示上载结果
With Label3
.Text = " 上载成功!"
.ForeColor = Color.DarkGreen
End With
End If
' 释放资源
hpf = Nothing
Next
Catch ex As Exception
' 显示错误讯息
With Label3
.Text = " Error: " & ex.Message
.ForeColor = Color.Red
End With
End Try
Dim lIndex As Integer
Dim lCount As Integer
Dim hpf As HttpPostedFile
Dim filename As String
Dim data() As String
Try
' 读取所有要上载文件的数目
lCount = Request.Files.Count
' 读取每一个上载文件的资料
For lIndex = 0 To lCount - 1
' 读取第N个上载文件的资料
hpf = Request.Files(lIndex)
' 检查所选文件大小
If hpf.ContentLength = 0 Then
' 显示所选文件资料
Label2.Text = Label2.Text & " <br> " & " 文件大小: " & hpf.ContentLength & " bytes<br>"
Label2.Text = Label2.Text & " 文件类型: " & hpf.ContentType & " <br>"
Label2.Text = Label2.Text & " 文件名称: " & hpf.FileName & " <br>"
' 读取文件名称
data = Split (hpf.FileName, " \ " )
' 上载文件到服务器
PostFileName.PostedFile.SaveAs(Server.MapPath( " . " ) & " \ " & data( UBound (data)))
' 显示上载结果
With Label3
.Text = " 上载成功!"
.ForeColor = Color.DarkGreen
End With
End If
' 释放资源
hpf = Nothing
Next
Catch ex As Exception
' 显示错误讯息
With Label3
.Text = " Error: " & ex.Message
.ForeColor = Color.Red
End With
End Try
點撃下載代碼。