ASP.NET依托.net framework類庫,封裝了大量的功能,使得上傳文件非常簡單,主要有以下三種基本方法,需要的朋友可以參考下
方法一:用Web控件FileUpload,上傳到網站根目錄。 Test.aspx關鍵代碼: 代碼如下: <form id="form1" runat="server"> <asp:FileUpload ID="FileUpload1" runat="server" /> <asp:Button ID="Button1" runat="server" Text="上傳" OnClick="Button1_Click" /> <asp:Label ID="Label1" runat="server" Text="" Style="color: Red"></asp:Label> </form> Test.aspx.cs關鍵代碼: 代碼如下: protected void Button1_Click(object sender, EventArgs e) { if (FileUpload1.HasFile) { FileUpload1.SaveAs(Server.MapPath("~/") + FileUpload1.FileName); Label1.Text = "上傳成功!"; } } 方法二:用Html控件HtmlInputFile,上傳到網站根目錄。 Test.aspx關鍵代碼: 代碼如下: <form id="form1" runat="server"> <input type="file" id="file1" runat="server" /> <asp:Button ID="Button1" runat="server" Text="上傳" OnClick="Button1_Click" /> <asp:Label ID="Label1" runat="server" Text="" Style="color: Red"></asp:Label> </form> Test.aspx.cs關鍵代碼: 代碼如下: protected void Button1_Click(object sender, EventArgs e) { if (file1.PostedFile.ContentLength > 0) { file1.PostedFile.SaveAs(Server.MapPath("~/") + Path.GetFileName(file1.PostedFile.FileName)); Label1.Text = "上傳成功!"; } } 方法三:用Html元素<input type="file" …/>,通過Request.Files上傳到網站根目錄。 Test.aspx關鍵代碼: 代碼如下: <form id="form1" runat="server" enctype="multipart/form-data"> <input type="file" name="file" /> <asp:Button ID="Button1" runat="server" Text="上傳" OnClick="Button1_Click" /> <asp:Label ID="Label1" runat="server" Text="" Style="color: Red"></asp:Label> </form> Test.aspx.cs關鍵代碼: 代碼如下: protected void Button1_Click(object sender, EventArgs e) { if (Request.Files["file"].ContentLength > 0) { Request.Files["file"].SaveAs(Server.MapPath("~/") + Path.GetFileName(Request.Files["file"].FileName)); Label1.Text = "上傳成功!"; } } 注意兩個區別: 一:FileUpload.FileName獲取客戶端上傳文件名(不帶路徑),而file1.PostedFile.FileName 和Request.Files["file"].FileName在不同浏覽器下情況不同:IE8下獲得的是客戶端上傳文件的完全限定名(帶路徑),谷歌、蘋果等浏覽器下則仍為文件名(不帶路徑)。 二:FileUpload控件有HasFile屬性,用於判斷用戶是否選擇了上傳文件,而後面兩種方法則需要通過判斷上傳文件大小ContentLength屬性,當用戶沒有選擇上傳文件時,該屬性值為0。 可以看出FileUpload封裝程度更高,但靈活性也稍差。 例,Asp.net 文件上傳類(取得文件後綴名,保存文件,加入文字水印) 代碼如下: using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Drawing; using System.IO; using System.Drawing.Imaging; namespace EC { /// <summary> /// 上傳類 /// </summary> public class UploadObj { public UploadObj() { // // TODO: 在此處添加構造函數邏輯 // } /// <summary> /// 允許文件上傳的類型枚舉 /// </summary> public enum FileType { jpg,gif,bmp,png } #region 取得文件後綴 /// <summary> /// 取得文件後綴 /// </summary> /// <param name="filename">文件名稱</param> /// <returns></returns> public static string GetFileExtends(string filename) { string ext = null; if (filename.IndexOf('.') > 0) { string[] fs = filename.Split('.'); ext = fs[fs.Length - 1]; } return ext; } #endregion #region 檢測文件是否合法 /// <summary> /// 檢測上傳文件是否合法 /// </summary> /// <param name="fileExtends">文件後綴名</param> /// <returns></returns> public static bool CheckFileExtends(string fileExtends) { bool status = false; fileExtends = fileExtends.ToLower(); string[] fe = Enum.GetNames(typeof(FileType)); for (int i = 0; i < fe.Length; i++) { if (fe[i].ToLower() == fileExtends) { status = true; break; } } return status; } #endregion #region 保存文件 /// <summary> /// 保存文件 /// </summary> /// <param name="fpath">全路徑,Server.MapPath()</param> /// <param name="myFileUpload">上傳控件</param> /// <returns></returns> public static string PhotoSave(string fpath,FileUpload myFileUpload) { string s = ""; string fileExtends = ""; string fileName = myFileUpload.FileName; if (fileName != "") { //取得文件後綴 fileExtends = EC.UploadObj.GetFileExtends(fileName); if (!EC.UploadObj.CheckFileExtends(fileExtends)) { EC.MessageObject.ShowPre("上傳文件類型不合法"); } Random rd = new Random(); s = EC.RandomObject.DateRndName(rd) + "." + fileExtends; string file = fpath + "" + s; try { myFileUpload.SaveAs(file); } catch (Exception ee) { throw new Exception(ee.ToString()); } } return s; } #endregion #region 加入文字水印 /// <summary> /// 加入文字水印 /// </summary> /// <param name="fileName">文件名稱路徑(全路徑)</param> /// <param name="text">文件</param> public void AddTextToImg(string fileName, string text) { if (!File.Exists(fileName)) { throw new FileNotFoundException("文件不存在"); } if (text == string.Empty) { return; } System.Drawing.Image image = System.Drawing.Image.FromFile(fileName); Bitmap bitmap = new Bitmap(image, image.Width, image.Height); Graphics g = Graphics.FromImage(bitmap); float fontSize = 12.0f;//字體大小 float textWidth = text.Length * fontSize;//文本的長度 //下面定義一個矩形區域,以後在這個矩形裡面畫上白底黑字 float rectX = 0; float rectY = 0; float rectWidth = text.Length * (fontSize + 8); float rectHeight = fontSize + 8; //聲明矩形域 RectangleF textArea = new RectangleF(rectX, rectY, rectWidth, rectHeight); Font font = new Font("宋體", fontSize);//定義字體 Brush whiteBrush = new SolidBrush(Color.White);//白筆刷,畫文字用 Brush blackBrush = new SolidBrush(Color.Black);//黑筆刷,畫背景用 g.FillR