ASP.NET中常用功能代码总结(5)——文件操作篇
posted @ 2005-12-02 11:19 Chandler.C 阅读(222) 评论(1) 编辑
2005年12月2日 #
posted @ 2005-12-02 11:19 Chandler.C 阅读(222) 评论(1) 编辑
ASP.NET中常用功能代码总结(2)——生成验证图片
整理:Terrylee
生成随机的验证图片
使用方法:

/**////调用函数将验证码生成图片
this.CreateCheckCodeImage(GenerateCheckCode());
/**//// <summary>
/// 产生五位的随机字符串
/// </summary>
/// <returns></returns>
private string GenerateCheckCode()
{
int number;
char code;
string checkCode = String.Empty;
System.Random random = new Random();
for (int i = 0; i < 5; i++)
{
number = random.Next();
if (number % 2 == 0)
code = (char)('0' + (char)(number % 10));
else
code = (char)('A' + (char)(number % 26));
checkCode += code.ToString();
}

/**////用于客户端校验码比较
Session["CheckCode"] = checkCode;
return checkCode;
}

/**//// <summary>
/// 将验证码生成图片显示
/// </summary>
/// <param name="checkCode"></param>
private void CreateCheckCodeImage(string checkCode)
{
if (checkCode == null || checkCode.Trim() == String.Empty)
return;
System.Drawing.Bitmap image = new System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 12.5)), 22);
Graphics g = Graphics.FromImage(image);
try
{
/**////生成随机生成器
Random random = new Random();

/**////清空图片背景色
g.Clear(Color.White);

/**////画图片的背景噪音线
for (int i = 0; i < 25; i++)
{
int x1 = random.Next(image.Width);
int x2 = random.Next(image.Width);
int y1 = random.Next(image.Height);
int y2 = random.Next(image.Height);
g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);
}
Font font = new System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic));
System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2f, true);
g.DrawString(checkCode, font, brush, 2, 2);

/**////画图片的前景噪音点
for (int i = 0; i < 100; i++)
{
int x = random.Next(image.Width);
int y = random.Next(image.Height);
image.SetPixel(x, y, Color.FromArgb(random.Next()));
}

/**////画图片的边框线
g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);
System.IO.MemoryStream ms = new System.IO.MemoryStream();
image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
Response.ClearContent();
Response.ContentType = "image/Gif";
Response.BinaryWrite(ms.ToArray());
}
finally
{
g.Dispose();
image.Dispose();
}
}posted @ 2005-12-02 11:18 Chandler.C 阅读(331) 评论(1) 编辑
ASP.NET中常用功能代码总结(3)——上传图片到数据库
整理:Terrylee
一.上传图片到数据库

/**//// <summary>
/// 上传图片
/// </summary>
private void UploadFile()

{
/**////得到用户要上传的文件名
string strFilePathName = loFile.PostedFile.FileName;
string strFileName = Path.GetFileName(strFilePathName);
int FileLength = loFile.PostedFile.ContentLength;
if(FileLength<=0)
return;

/**////上传文件
try
{

/**////图象文件临时储存Byte数组
Byte[] FileByteArray = new Byte[FileLength];

/**////建立数据流对像
Stream StreamObject = loFile.PostedFile.InputStream; 

/**////读取图象文件数据,FileByteArray为数据储存体,0为数据指针位置、FileLnegth为数据长度
StreamObject.Read(FileByteArray,0,FileLength); 

/**////建立SQL Server链接
string strCon = System.Configuration.ConfigurationSettings.AppSettings["DSN"];
SqlConnection Con = new SqlConnection(strCon);
String SqlCmd = "INSERT INTO ImageStore (ImageData, ImageContentType, ImageDescription, ImageSize) VALUES (@Image, @ContentType, @ImageDescription, @ImageSize)";
SqlCommand CmdObj = new SqlCommand(SqlCmd, Con);
CmdObj.Parameters.Add("@Image",SqlDbType.Binary, FileLength).Value = FileByteArray;
CmdObj.Parameters.Add("@ContentType", SqlDbType.VarChar,50).Value = loFile.PostedFile.ContentType; //记录文件类型

/**////把其它单表数据记录上传
CmdObj.Parameters.Add("@ImageDescription", SqlDbType.VarChar,200).Value = tbDescription.Text;

/**////记录文件长度,读取时使用
CmdObj.Parameters.Add("@ImageSize", SqlDbType.BigInt,8).Value = FileLength;
Con.Open();
CmdObj.ExecuteNonQuery();
Con.Close();

/**////跳转页面
Response.Redirect("ShowAll.aspx");
}
catch(Exception ex)
{
throw ex;
}
}二.从数据库中读取图片

/**//// <summary>
/// 显示图片
/// </summary>
private void ShowImages()

{
/**////ID为图片ID
int ImgID = Convert.ToInt32(Request.QueryString["ID"]);

/**////建立数据库连接
string strCon = System.Configuration.ConfigurationSettings.AppSettings["DSN"];
SqlConnection Con = new SqlConnection(strCon);
String SqlCmd = "SELECT * FROM ImageStore WHERE ImageID = @ImageID";
SqlCommand CmdObj = new SqlCommand(SqlCmd, Con);
CmdObj.Parameters.Add("@ImageID", SqlDbType.Int).Value = ImgID;
Con.Open();
SqlDataReader SqlReader = CmdObj.ExecuteReader();
SqlReader.Read(); 

/**////设定输出文件类型
Response.ContentType = (string)SqlReader["ImageContentType"];

/**////输出图象文件二进制数制
Response.OutputStream.Write((byte[])SqlReader["ImageData"], 0, (int)SqlReader["ImageSize"]);
Response.End();
Con.Close();
}posted @ 2005-12-02 11:16 Chandler.C 阅读(553) 评论(3) 编辑
ASP.NET中常用功能代码总结(4)——保存图片到XML文件
整理:Terrylee
一.保存图片到XML文件

/**//// <summary>
/// 保存图片到XML文件
/// </summary>
private void UploadImageToXml()

{
/**////得到用户要上传的文件名
string strFilePathName = loFile.PostedFile.FileName;
string strFileName = Path.GetFileName(strFilePathName);
int FileLength = loFile.PostedFile.ContentLength;
if(FileLength<=0)
return;
try
{ 
/**////图象文件临时储存Byte数组
Byte[] FileByteArray = new Byte[FileLength]; 

/**////建立数据流对像
Stream StreamObject = loFile.PostedFile.InputStream; 

/**////读取图象文件数据,FileByteArray为数据储存体,0为数据指针位置、FileLnegth为数据长度
StreamObject.Read(FileByteArray,0,FileLength); 

/**////要打开的文件
string fileName = Server.MapPath(".\\WriteXml.xml");
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(fileName);

/**////查找<dbGuest>
XmlNode root=xmlDoc.SelectSingleNode("dbImage");
XmlNodeList xnl=xmlDoc.SelectSingleNode("dbImage").ChildNodes;
int nIndex = xnl.Count;

/**////以下添加新结点
XmlElement xe1=xmlDoc.CreateElement("Image");//创建一个<User>节点
XmlElement xesub1=xmlDoc.CreateElement("ImageID");

/**////设置文本节点
xesub1.InnerText=nIndex.ToString();

/**////添加到<User>节点中
xe1.AppendChild(xesub1);
XmlElement xesub2=xmlDoc.CreateElement("ImageContentType");
xesub2.InnerText=loFile.PostedFile.ContentType;
xe1.AppendChild(xesub2);
XmlElement xesub3=xmlDoc.CreateElement("ImageSize");
xesub3.InnerText=FileLength.ToString();
xe1.AppendChild(xesub3);
XmlElement xesub4=xmlDoc.CreateElement("ImageDescription");
xesub4.InnerText=tbDescription.Text;
xe1.AppendChild(xesub4);
XmlElement xesub5=xmlDoc.CreateElement("ImageData");
xesub5.InnerText= Convert.ToBase64String(FileByteArray);
xe1.AppendChild(xesub5);

/**////添加到<dbGuest>节点中
root.AppendChild(xe1);
xmlDoc.Save(fileName);
Response.Redirect("ShowAllImg.aspx");
}
catch(Exception ex)
{
throw ex;
}
}二.从XML中读取图片数据

/**//// <summary>
/// 从XML中读取图片
/// </summary>
/// <param name="ImageID">图片ID</param>
private void ReadImageFromXml(string ImageID)

{ 
/**////ID为图片ID
int ImgID = Convert.ToInt32(ImageID); 

/**////要打开的文件
string fileName = Server.MapPath(".\\WriteXml.xml");
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(fileName);
XmlNodeList node = xmlDoc.SelectSingleNode("//Image[ImageID='"+ImgID.ToString()+"']").ChildNodes;
if(node!=null)
{
string strType = node.Item(1).InnerText;
string strData =node.Item(4).InnerText;
int nSize = int.Parse(node.Item(2).InnerText);

/**////设定输出文件类型
Response.ContentType = strType;

/**////输出图象文件二进制数制
Response.OutputStream.Write(Convert.FromBase64String(strData), 0, nSize);
Response.End();
//也可以保存为图像
//FileStream fs = new FileStream(@"C:\aa.BMP", FileMode.OpenOrCreate, FileAccess.Write);
//fs.Write((Convert.FromBase64String(strData), 0,nSize);
//fs.Close();
}
}posted @ 2005-12-02 11:16 Chandler.C 阅读(305) 评论(2) 编辑
posted @ 2005-12-02 11:07 Chandler.C 阅读(315) 评论(2) 编辑