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>");
}
}