自引入 Microsoft ASP.NET 版本 1.0 之日起,就存在生成 Web 應用程序的 內置方法,這些方法能夠將文件上載到宿主服務器。這是通過使用 File Field HTML 服務器控件實現的。我以前寫過一篇關於如何在 ASP.NET 應用程序中有效 使用該控件的 MSDN 文章。本文將再次介紹文件上載過程,但不是使用 File Field 控件,我將向您介紹如何有效使用 ASP.NET 2.0 提供的新 FileUpload 服務器控件。
雖然本文向您介紹新增的 FileUpload 服務器控件,但現在仍然可以在應用 程序中使用 File Field 控件,注意到這一點是非常重要的。
FileUpload 服務器控件示例
在 ASP.NET 1.x 中使用 File Field 控件時,必須采取一些額外的步驟才能 使一切有條不紊地正常運行。例如,您需要親自將 enctype="multipart/form- data" 添加到頁面的 <form> 元素中。ASP.NET 2.0 中提供的新 FileUpload 服務器控件使將文件上載到宿主服務器的過程盡可能的簡單。
最後,您試圖允許對 HTML <input type="file">標記進行編程。該標 記用於與 HTML 窗體中的文件數據一起使用。過去使用傳統的 ASP(ASP 3.0 或 更早的版本)時,許多程序員使用第三方組件將文件從客戶端上載到服務器。現 在,通過 .NET 和該新控件可以進行上載。清單 1 顯示如何使用 FileUpload 控件將文件上載到服務器。
注 提供 Microsoft Visual Basic 和 C# 形式的示例代碼。
清單 1. 使用 FileUpload 控件將文件上載到服務器
Visual Basic
<%@ Page Language="VB" %>
<script runat="server">
Protected Sub Button1_Click(ByVal sender As Object, _
ByVal e As System.EventArgs)
If FileUpload1.HasFile Then
Try
FileUpload1.SaveAs("C:\Uploads\" & _
FileUpload1.FileName)
Label1.Text = "File name: " & _
FileUpload1.PostedFile.FileName & "<br>" & _
"File Size: " & _
FileUpload1.PostedFile.ContentLength & " kb<br>" & _
"Content type: " & _
FileUpload1.PostedFile.ContentType
Catch ex As Exception
Label1.Text = "ERROR: " & ex.Message.ToString()
End Try
Else
Label1.Text = "You have not specified a file."
End If
End Sub
</script>
<HTML xmlns="http://www.w3.org/1999/xHTML" >
<head runat="server">
<title>Upload Files</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<ASP:FileUpload ID="FileUpload1" runat="server" /><br />
<br />
<ASP:Button ID="Button1" runat="server" OnClick="Button1_Click"
Text="Upload File" /> <br />
<br />
<ASP:Label ID="Label1" runat="server"></ASP:Label></div>
</form>
</body>
</HTML>