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