天天看點

在ASP.NET中使用基類庫

ASP.NET中檔案操作

System.IO

•Directory :用于建立、移動和枚舉通過

目錄和子目錄

•File :用于建立、複制、删除、移動和打

開檔案

•Path:對包含檔案或目錄路徑資訊的

String 執行個體執行操作

•StreamReader、StreamWriter:以一種

特定的編碼讀寫字元

//上傳檔案

using System.IO;

 protected System.Web.UI.HtmlControls.HtmlInputFile loFile;

//得到使用者要上傳的檔案名

   string strFilePathName = loFile.PostedFile.FileName;

   string strFileName = Path.GetFileName(strFilePathName);

   //以下建立伺服器路徑

   string strServerPath;

   if(tbPath.Text=="")

    strServerPath = "C://";

   else

    strServerPath = tbPath.Text;

   if(!Directory.Exists(strServerPath))

    Directory.CreateDirectory(strServerPath);

   //上傳檔案

   loFile.PostedFile.SaveAs(strServerPath+"//"+strFileName);

   //儲存檔案名,檔案類型,檔案大小

   Session["FileName"] = strFileName;

   Session["FileType"] = loFile.PostedFile.ContentType;

   Session["FileLength"] = loFile.PostedFile.ContentLength;

StreamWriter sw = new StreamWriter("c://FileInfo.txt");

   sw.WriteLine("檔案類型:"+lbFiletype.Text);

   sw.WriteLine("檔案大小:"+lbFilesize.Text);

   sw.WriteLine("檔案名稱:"+lbFilename.Text);

   sw.Close();

//查找檔案

private void btnFind_Click(object sender, System.EventArgs e)

  {

   try

   {

    if(tbInput.Text.Trim()=="")

    {

     lbPath.Text = "不存在此檔案!";

     return;

    }

    string[] drives = System.IO.Directory.GetLogicalDrives();

    foreach (string str in drives)

    {

     if(ProcessDirectory(str))

      break;

    }

    if(!bExist)

     lbPath.Text = "不存在此檔案!";

   }

   catch (System.IO.IOException)

   {

    Response.Write("I/O錯誤!");

   }

   catch (System.Security.SecurityException)

   {

    Response.Write("沒有通路權限!");

   }

  }

  public bool  ProcessDirectory(string targetDirectory)

  {

   //try

   {

    // Process the list of files found in the directory

    string [] fileEntries = Directory.GetFiles(targetDirectory);

    foreach(string fileName in fileEntries)

    {

     if(ProcessFile(fileName))

      return true;

    }

    // Recurse into subdirectories of this directory

    string [] subdirectoryEntries = Directory.GetDirectories(targetDirectory);

    foreach(string subdirectory in subdirectoryEntries)

    {

     if(ProcessDirectory(subdirectory))

      return true;

    }

    return false;

   }

   //catch(Exception)

   //{

   // return false;

   //}

  }

  public bool ProcessFile(string strFileName)

  {

   if(Path.GetFileName(strFileName).ToLower()==tbInput.Text.Trim().ToLower())

   {

    lbPath.Text = strFileName.ToLower();

    bExist=true;

    return true;

   }

   else

    return false;

  }

ASP.NET中圖形的操作

System.Drawing:命名空間提供了對

GDI+ 基本圖形功能的通路

•Graphics 類:最重要的類,通過它實作圖形的繪

制。

•Pen、Brush:繪圖的工具

•Point、Rectangle、Region、Size、Font:輔助

繪圖機關。

•通過Bitmap轉化為圖像,顯示在頁面上。

private void Page_Load(object sender, System.EventArgs e)

  {

   Bitmap b = new Bitmap(600,600);

   Graphics g = Graphics.FromImage(b);//GDI+中最重要的類

   g.Clear(Color.Red);

   Pen p = new Pen(Color.Green,3.0f);//鉛筆

   g.DrawLine(p,0,0,600,600);

   g.DrawLine(p,600,0,0,600);

   g.DrawEllipse(p,0,0,100,100);

   SolidBrush sb = new SolidBrush(Color.Blue);//固體刷

   g.FillEllipse(sb,100,100,200,200);

   g.FillRectangle(sb,300,300,100,100);

   Font f = new Font("宋體",40);//字型

   g.DrawString("哈哈,不錯!",f,sb,0,300);

   Point[] arrP = new Point[5];//point為基本的點

   arrP[0] = new Point(200,200);

   arrP[1] = new Point(200,400);

   arrP[2] = new Point(500,400);

   arrP[3] = new Point(500,600);

   arrP[4] = new Point(300,600);

   g.DrawPolygon(p,arrP);

   b.Save(Response.OutputStream,ImageFormat.Gif);

  }

//上傳圖檔

  protected System.Web.UI.HtmlControls.HtmlInputFile InputFile;

private void btnLoad_Click(object sender, System.EventArgs e)

  {

   ImageShow.ImageUrl = InputFile.PostedFile.FileName;

  }

  private void btnConvert_Click(object sender, System.EventArgs e)

  {

   string strFilePathName = ImageShow.ImageUrl;

   System.Drawing.Image i = System.Drawing.Image.FromFile(strFilePathName);

   //以下得到在伺服器上儲存的檔案路徑名稱

   string strFileName = Path.GetFileNameWithoutExtension(strFilePathName);

   ImageFormat f = ImageFormat.Bmp;

   switch(ddlFormat.SelectedItem.Text.ToLower())//toLower為轉換為小寫

   {

    case "bmp":

     break;

    case "jpeg":

     f = ImageFormat.Jpeg;

     break;

    case "gif":

     f = ImageFormat.Gif;

     break;

    case "png":

     f = ImageFormat.Png;

     break;

    case "tiff":

     f = ImageFormat.Tiff;

     break;

   }

   string strSeverPath=tbPath.Text+"//"+strFileName+"."+

    ddlFormat.SelectedItem.Text;

   i.Save(strSeverPath,f);

  }

System.Drawing.Imaging :命名空間提供

進階GDI+ 圖像處理功能

  private void btnLoad_Click(object sender, System.EventArgs e)

  {

   Session["Path"] = InputFile.PostedFile.FileName;

  }

  private void btnAdd_Click(object sender, System.EventArgs e)

  {

   Session["Add"] = true;

  }

  private void BtnRotateFlip_Click(object sender, System.EventArgs e)

  {

   Session["RotateFlip"] = true;

  }

  private void btnEx_Click(object sender, System.EventArgs e)

  {

   Session["Exp"] = true;

  }

  private void btnCut_Click(object sender, System.EventArgs e)

  {

   Session["Cut"] = true;

  }

private void Page_Load(object sender, System.EventArgs e)

  {

   // 在此處放置使用者代碼以初始化頁面

   if(Session["Path"]!=null)

   {

//    Response.Clear();

//    Response.Write("<br>");

//    Response.Write("<br>");

    System.Drawing.Image g=System.Drawing.Image.FromFile(Session["Path"].ToString());

    System.Drawing.Imaging.ImageFormat f=g.RawFormat;

    Bitmap b=new Bitmap(g);

    if(Session["RotateFlip"]!=null)

     b.RotateFlip(RotateFlipType.Rotate90FlipNone);

    Graphics gh=Graphics.FromImage(b);

    if(Session["Add"]!=null)

     gh.DrawString("MSDN榮譽出品",new Font("宋體",50),Brushes.Red ,5,b.Height-100);

    //    拉伸圖檔

    if(Session["Exp"]!=null)

    {

     gh.Clear(Color.White);

     gh.DrawImage(g,new Rectangle(10,10,50,50),new Rectangle(0,0,g.Width,g.Height),GraphicsUnit.Pixel);//17

    }

    //"切割圖檔

    if(Session["Cut"]!=null)

    {

     gh.Clear(Color.White);

     gh.DrawImage(g,50,100,new Rectangle(80,80,410,410),GraphicsUnit.Pixel); //19

    }

    gh.SmoothingMode=SmoothingMode.AntiAlias;

    b.Save(Response.OutputStream,f);                        

    gh.Dispose();

    b.Dispose();

    g.Dispose();

    Session["RotateFlip"]=null;

    Session["Cut"]=null;

    Session["Exp"]=null;

    Session["Exp"]=null;

    Session["Cut"]=null;

   }

密碼加密

1. 無論什麼時候隻要我們使用資料庫開發網站,

我們就必須保護使用者資料,這非常必要。

2. 黑客可以盜竊密碼,個人隐私遭到嚴重的破壞。

最好的方法就是不儲存原始密碼,而是加密後

再放到資料庫中。

3. 當我們想驗證使用者時,我們隻需将使用者輸入的

密碼再次加密與資料庫中的記錄進行比較即可。

4. 在asp中我們需要額外的對象加密。

5. 但在asp.net中SDK可以通過

System.Web.Security.FormsAuthentication類

private void Page_Load(object sender, System.EventArgs e)

  {

   if(File.Exists("c://user.ini"))

    lbMessage.Text = "使用者登入";

   else

    lbMessage.Text = "使用者注冊";

  }

  #region Web 窗體設計器生成的代碼

  override protected void OnInit(EventArgs e)

  {

   //

   // CODEGEN: 該調用是 ASP.NET Web 窗體設計器所必需的。

   //

   InitializeComponent();

   base.OnInit(e);

  }

  /// <summary>

  /// 設計器支援所需的方法 - 不要使用代碼編輯器修改

  /// 此方法的内容。

  /// </summary>

  private void InitializeComponent()

  {   

   this.btnLogin.Click += new System.EventHandler(this.btnLogin_Click);

   this.Load += new System.EventHandler(this.Page_Load);

  }

  #endregion

  private void btnLogin_Click(object sender, System.EventArgs e)

  {

   if(!File.Exists("c://user.ini"))

   {

    StreamWriter sw = new StreamWriter("c://user.ini");

    string strName = tbName.Text;

    string strPass = tbPass.Text;

    string strEncryPass = System.Web.Security.FormsAuthentication.

     HashPasswordForStoringInConfigFile(strPass,"md5");

    sw.WriteLine(strName);

    sw.WriteLine(strEncryPass);

    sw.Close();

   }

   else

   {

    //從user.ini中讀出儲存的使用者名稱和密碼,進行比較

    StreamReader sr = new StreamReader("c://user.ini");

    string strSaveName = sr.ReadLine();

    string strSavePass = sr.ReadLine();

    sr.Close();

    string strInputPass = System.Web.Security.FormsAuthentication

     .HashPasswordForStoringInConfigFile(tbPass.Text,"md5");

    if(strSaveName!=tbName.Text||strSavePass!=strInputPass)

    {

     Response.Write("使用者名稱或密碼錯誤!");

     mainPanel.Visible = false;

    }

    else

     Response.Write("<script language = javascript>alert('成功登入!')</script>");

   }

  }