在 Web 程式設計中,我們常需將本地檔案上傳至 Web 伺服器,上傳後用戶可透過瀏覽器方便瀏覽,應用極廣。
如何用 C# 實現檔案上傳功能?以下簡要介紹。
在 Visual C# Web 專案中新增上傳用 Web Form。從 ToolBox 選擇 Html 類 File Field 控制項加入 Web Form,但此時該控制項非伺服端控制項,需加上代碼:
<form method=post enctype=multipart/form-data runat="server">
這樣它成為伺服端控制項。若需同時上傳多檔案,可相應增加此控制項。
注意:代碼中一定要把 <form> 屬性設為:
<form method=post enctype=multipart/form-data runat="server">
若無此屬性無法實現上傳。
在 Web Form 增加 Web Form 類 Button,雙擊加入代碼:
// 上傳圖片程式碼段
DateTime now = DateTime.Now; // 取目前時間到 DateTime 物件 now
string strBaseLocation = "D:\\web\\FC\\pic\\"; // 檔案將上傳到伺服器絕對目錄
if (uploadfile1.PostedFile.ContentLength != 0) // 判斷選取對話方塊選取檔案長度是否為 0
{
uploadfile1.PostedFile.SaveAs(strBaseLocation + now.DayOfYear.ToString() + uploadfile1.PostedFile.ContentLength.ToString() + ".jpg");
// 執行上傳,並自動根據日期與檔案大小不同為檔案命名,確保不重複
Label1.Text = "圖片1已經上傳,檔案名為:" + now.DayOfYear.ToString() + uploadfile1.PostedFile.ContentLength.ToString() + ".jpg";
navigator.Insert(System.Xml.XPath.TreePosition.After, System.Xml.XmlNodeType.Element, "pic1", "", "");
navigator.Insert(System.Xml.XPath.TreePosition.FirstChild, System.Xml.XmlNodeType.Text, "pic1", "", "");
navigator.Value = now.DayOfYear.ToString() + uploadfile1.PostedFile.ContentLength.ToString() + ".jpg";
navigator.MoveToParent();
}
上述代碼用於筆者開發的使用 XML 檔案儲存新聞資訊系統,後幾句代碼作用是寫上傳檔案資訊到 XML。若上傳其他類型檔案,只需將 jpg 改為相應副檔名,如改為 doc 即可上傳 Word 檔,瀏覽器可直接瀏覽。