更新:2007 年 11 月
FileUpload Web 伺服器控制項允許您提供使用者一種方法,讓他們可將檔案從其電腦傳送至伺服器。要上載的檔案會送交至伺服器做為回傳期間瀏覽器要求的一部分。在檔案完成了上載之後,您可以利用程式碼管理檔案。
若要以 FileUpload Web 伺服器控制項上載檔案
將 FileUpload 控制項加入至頁面。
在事件 (如頁面的 Load 事件) 的處理常式中,執行下列動作:
請測試 FileUpload 控制項的 HasFile 屬性,檢查這個控制項是否具有上載的檔案。
檢查檔案的檔案名稱或 MIME 類型,以確定使用者已上載您想要接受的檔案。若要檢查 MIME 類型,請取得以 FileUpload 控制項的 PostedFile 屬性公開的 HttpPostedFile 物件。然後,您可以檢查已公佈檔案的 ContentType 屬性,來取得 MIME 類型。
安全性注意事項: |
|---|
在某些情況下,可以欺騙上載檔案的 MIME 類型,所以只檢查檔案的 MIME 類型不是可靠的安全性檢查。 |
將檔案儲存至您指定的位置。您可以呼叫 HttpPostedFile 物件的 SaveAs 方法。或者,您也可以使用 HttpPostedFile 物件的 InputStream 屬性,將上載檔案當做位元組陣列或資料流來管理。
下列範例顯示如何使用上載檔案。程式碼會對照硬式編碼的允許副檔名清單,檢查上載檔案的副檔名,並拒絕所有其他類型的檔案。然後,檔案會寫入至目前網站的 UploadedImages 資料夾中。上載檔案會以它在用戶端電腦上具有的相同檔案名稱來儲存。系統會使用 FileUpload 控制項的 FileName 屬性,這是因為 HttpPostedFile 物件的 FileName 屬性會傳回檔案在用戶端電腦上的完整路徑。
安全性注意事項: |
|---|
請不要將已儲存檔案的路徑和名稱顯示給使用者;這樣做會洩露可能對惡意使用者有用的資訊。 |
Protected Sub Page_Load(ByVal sender As Object,
ByVal e As System.EventArgs) Handles Me.Load
If IsPostBack Then
Dim path As String = Server.MapPath("~/UploadedImages/")
Dim fileOK As Boolean = False
If FileUpload1.HasFile Then
Dim fileExtension As String
fileExtension = System.IO.Path. _
GetExtension(FileUpload1.FileName).ToLower()
Dim allowedExtensions As String() = _
{".jpg", ".jpeg", ".png", ".gif"}
For i As Integer = 0 To allowedExtensions.Length - 1
If fileExtension = allowedExtensions(i) Then
fileOK = True
End If
Next
If fileOK Then
Try
FileUpload1.PostedFile.SaveAs(path & _
FileUpload1.FileName)
Label1.Text = "File uploaded!"
Catch ex As Exception
Label1.Text = "File could not be uploaded."
End Try
Else
Label1.Text = "Cannot accept files of this type."
End If
End If
End If
End Sub
protected void Page_Load(object sender, EventArgs e)
{
if(IsPostBack)
{
Boolean fileOK = false;
String path = Server.MapPath("~/UploadedImages/");
if (FileUpload1.HasFile)
{
String fileExtension =
System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();
String[] allowedExtensions =
{".gif", ".png", ".jpeg", ".jpg"};
for (int i = 0; i < allowedExtensions.Length; i++)
{
if (fileExtension == allowedExtensions[i])
{
fileOK = true;
}
}
}
if (fileOK)
{
try
{
FileUpload1.PostedFile.SaveAs(path
+ FileUpload1.FileName);
Label1.Text = "File uploaded!";
}
catch (Exception ex)
{
Label1.Text = "File could not be uploaded.";
}
}
else
{
Label1.Text = "Cannot accept files of this type.";
}
}
}
概念