萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> asp.net編程 >> asp.net文件上傳示例

asp.net文件上傳示例

 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
copyright © 萬盛學電腦網 all rights reserved