Chandler

导航

公告

统计

2005年12月2日 #

ASP.NET中常用功能代码总结(5)——文件操作篇

posted @ 2005-12-02 11:19 Chandler.C 阅读(222) 评论(1) 编辑

ASP.NET中常用功能代码总结(2)——生成验证图片

ASP.NET中常用功能代码总结(2——生成验证图片

整理:Terrylee

生成随机的验证图片

使用方法:

1///调用函数将验证码生成图片
2            this.CreateCheckCodeImage(GenerateCheckCode());

 1/// <summary>
 2        /// 产生五位的随机字符串
 3        /// </summary>
 4        /// <returns></returns>

 5        private string GenerateCheckCode()
 6        {  
 7            int number;
 8            char code;
 9            string checkCode = String.Empty;
10
11            System.Random random = new Random();
12
13            for (int i = 0; i < 5; i++)
14            {
15                number = random.Next();
16
17                if (number % 2 == 0)
18                    code = (char)('0' + (char)(number % 10));
19                else
20                    code = (char)('A' + (char)(number % 26));
21
22                checkCode += code.ToString();
23            }

24
25            ///用于客户端校验码比较
26            Session["CheckCode"= checkCode;
27
28            return checkCode;
29        }

30        
31        /// <summary>
32        /// 将验证码生成图片显示
33        /// </summary>
34        /// <param name="checkCode"></param>

35        private void CreateCheckCodeImage(string checkCode)
36        {  
37            if (checkCode == null || checkCode.Trim() == String.Empty)
38                return;
39
40            System.Drawing.Bitmap image = new System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 12.5)), 22);
41            Graphics g = Graphics.FromImage(image);
42
43            try
44            {
45                ///生成随机生成器 
46                Random random = new Random();
47
48                ///清空图片背景色 
49                g.Clear(Color.White);
50
51                ///画图片的背景噪音线 
52                for (int i = 0; i < 25; i++)
53                {
54                    int x1 = random.Next(image.Width);
55                    int x2 = random.Next(image.Width);
56                    int y1 = random.Next(image.Height);
57                    int y2 = random.Next(image.Height);
58
59                    g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);
60                }

61
62                Font font = new System.Drawing.Font("Arial"12, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic));
63                System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(00, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2ftrue);
64                g.DrawString(checkCode, font, brush, 22);
65
66                ///画图片的前景噪音点 
67                for (int i = 0; i < 100; i++)
68                {
69                    int x = random.Next(image.Width);
70                    int y = random.Next(image.Height);
71
72                    image.SetPixel(x, y, Color.FromArgb(random.Next()));
73                }

74
75                ///画图片的边框线 
76                g.DrawRectangle(new Pen(Color.Silver), 00, image.Width - 1, image.Height - 1);
77
78                System.IO.MemoryStream ms = new System.IO.MemoryStream();
79                image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
80                Response.ClearContent();
81                Response.ContentType = "image/Gif";
82                Response.BinaryWrite(ms.ToArray());
83            }

84            finally
85            {
86                g.Dispose();
87                image.Dispose();
88            }

89        }

posted @ 2005-12-02 11:18 Chandler.C 阅读(331) 评论(1) 编辑

ASP.NET中常用功能代码总结(3)——上传图片到数据库

ASP.NET中常用功能代码总结(3——上传图片到数据库

整理:Terrylee

一.上传图片到数据库

 1/// <summary>
 2/// 上传图片
 3/// </summary>

 4private void UploadFile()
 5{
 6    ///得到用户要上传的文件名
 7    string strFilePathName = loFile.PostedFile.FileName;
 8    string strFileName = Path.GetFileName(strFilePathName);
 9    int FileLength = loFile.PostedFile.ContentLength;
10
11    if(FileLength<=0)
12        return;
13
14    ///上传文件
15    try
16    {
17        
18        ///图象文件临时储存Byte数组
19        Byte[] FileByteArray = new Byte[FileLength];
20
21        ///建立数据流对像
22        Stream StreamObject = loFile.PostedFile.InputStream; 
23
24        ///读取图象文件数据,FileByteArray为数据储存体,0为数据指针位置、FileLnegth为数据长度
25        StreamObject.Read(FileByteArray,0,FileLength); 
26
27        ///建立SQL Server链接
28        string strCon = System.Configuration.ConfigurationSettings.AppSettings["DSN"];
29        SqlConnection Con = new SqlConnection(strCon);
30        String SqlCmd = "INSERT INTO ImageStore (ImageData, ImageContentType, ImageDescription, ImageSize) VALUES (@Image, @ContentType, @ImageDescription, @ImageSize)";
31        SqlCommand CmdObj = new SqlCommand(SqlCmd, Con);
32        CmdObj.Parameters.Add("@Image",SqlDbType.Binary, FileLength).Value = FileByteArray;
33        CmdObj.Parameters.Add("@ContentType", SqlDbType.VarChar,50).Value = loFile.PostedFile.ContentType; //记录文件类型
34        
35        ///把其它单表数据记录上传
36        CmdObj.Parameters.Add("@ImageDescription", SqlDbType.VarChar,200).Value = tbDescription.Text;
37        
38        ///记录文件长度,读取时使用
39        CmdObj.Parameters.Add("@ImageSize", SqlDbType.BigInt,8).Value = FileLength;
40        Con.Open();
41        CmdObj.ExecuteNonQuery(); 
42        Con.Close();
43
44        ///跳转页面
45        Response.Redirect("ShowAll.aspx");
46    }

47    catch(Exception ex)
48    {
49        throw ex;
50    }

51}

二.从数据库中读取图片

 1/// <summary>
 2/// 显示图片
 3/// </summary>

 4private void ShowImages()
 5{
 6    ///ID为图片ID
 7    int ImgID = Convert.ToInt32(Request.QueryString["ID"]);  
 8    
 9    ///建立数据库连接
10    string strCon = System.Configuration.ConfigurationSettings.AppSettings["DSN"];
11    SqlConnection Con = new SqlConnection(strCon);
12    String SqlCmd = "SELECT * FROM ImageStore WHERE ImageID = @ImageID";
13    SqlCommand CmdObj = new SqlCommand(SqlCmd, Con);
14    CmdObj.Parameters.Add("@ImageID", SqlDbType.Int).Value = ImgID;
15    
16    Con.Open();
17    SqlDataReader SqlReader = CmdObj.ExecuteReader();
18    SqlReader.Read(); 
19
20    ///设定输出文件类型
21    Response.ContentType = (string)SqlReader["ImageContentType"];
22    
23    ///输出图象文件二进制数制
24    Response.OutputStream.Write((byte[])SqlReader["ImageData"], 0, (int)SqlReader["ImageSize"]); 
25    Response.End();
26
27    Con.Close();    
28}

posted @ 2005-12-02 11:16 Chandler.C 阅读(553) 评论(3) 编辑

ASP.NET中常用功能代码总结(4)——保存图片到XML文件

ASP.NET中常用功能代码总结(4——保存图片到XML文件

整理:Terrylee

一.保存图片到XML文件

 1/// <summary>
 2/// 保存图片到XML文件
 3/// </summary>

 4private void UploadImageToXml()
 5{
 6    ///得到用户要上传的文件名
 7    string strFilePathName = loFile.PostedFile.FileName;
 8    string strFileName = Path.GetFileName(strFilePathName);
 9    int FileLength = loFile.PostedFile.ContentLength;
10    if(FileLength<=0)
11        return;
12    try
13    {    
14        ///图象文件临时储存Byte数组
15        Byte[] FileByteArray = new Byte[FileLength]; 
16
17        ///建立数据流对像
18        Stream StreamObject = loFile.PostedFile.InputStream; 
19
20        ///读取图象文件数据,FileByteArray为数据储存体,0为数据指针位置、FileLnegth为数据长度
21        StreamObject.Read(FileByteArray,0,FileLength); 
22
23        ///要打开的文件
24        string fileName = Server.MapPath(".\\WriteXml.xml");   
25    
26        XmlDocument xmlDoc = new XmlDocument();
27        xmlDoc.Load(fileName);
28
29        ///查找<dbGuest>
30        XmlNode root=xmlDoc.SelectSingleNode("dbImage");
31        XmlNodeList xnl=xmlDoc.SelectSingleNode("dbImage").ChildNodes;
32        int nIndex = xnl.Count;
33
34        ///以下添加新结点
35        XmlElement xe1=xmlDoc.CreateElement("Image");//创建一个<User>节点
36
37        XmlElement xesub1=xmlDoc.CreateElement("ImageID");
38        
39        ///设置文本节点
40        xesub1.InnerText=nIndex.ToString();
41
42        ///添加到<User>节点中
43        xe1.AppendChild(xesub1);
44        XmlElement xesub2=xmlDoc.CreateElement("ImageContentType");
45        xesub2.InnerText=loFile.PostedFile.ContentType;
46        xe1.AppendChild(xesub2);
47        XmlElement xesub3=xmlDoc.CreateElement("ImageSize");
48        xesub3.InnerText=FileLength.ToString();
49        xe1.AppendChild(xesub3);
50        XmlElement xesub4=xmlDoc.CreateElement("ImageDescription");
51        xesub4.InnerText=tbDescription.Text;
52        xe1.AppendChild(xesub4);
53        XmlElement xesub5=xmlDoc.CreateElement("ImageData");
54        xesub5.InnerText= Convert.ToBase64String(FileByteArray);
55        xe1.AppendChild(xesub5);
56        
57        ///添加到<dbGuest>节点中
58        root.AppendChild(xe1);
59        xmlDoc.Save(fileName);
60    
61        Response.Redirect("ShowAllImg.aspx");
62    }

63    catch(Exception ex)
64    {
65        throw ex;
66    }

67}

二.从XML中读取图片数据

 1/// <summary>
 2/// 从XML中读取图片
 3/// </summary>
 4/// <param name="ImageID">图片ID</param>

 5private void ReadImageFromXml(string ImageID)
 6{    
 7    ///ID为图片ID
 8    int ImgID = Convert.ToInt32(ImageID); 
 9
10    ///要打开的文件
11    string fileName = Server.MapPath(".\\WriteXml.xml");  
12    
13    XmlDocument xmlDoc = new XmlDocument();
14    xmlDoc.Load(fileName);
15    XmlNodeList node =  xmlDoc.SelectSingleNode("//Image[ImageID='"+ImgID.ToString()+"']").ChildNodes;
16    if(node!=null)
17    {
18        string strType = node.Item(1).InnerText;
19        string strData =node.Item(4).InnerText;
20        int nSize = int.Parse(node.Item(2).InnerText);
21        
22        ///设定输出文件类型
23        Response.ContentType = strType;
24
25        ///输出图象文件二进制数制
26        Response.OutputStream.Write(Convert.FromBase64String(strData), 0, nSize); 
27        Response.End();
28
29        //也可以保存为图像
30        //FileStream fs = new FileStream(@"C:\aa.BMP", FileMode.OpenOrCreate, FileAccess.Write);
31        //fs.Write((Convert.FromBase64String(strData), 0,nSize);
32        //fs.Close();
33    }

34}

posted @ 2005-12-02 11:16 Chandler.C 阅读(305) 评论(2) 编辑

ASP.NET中常用功能代码总结(6)——XML文件操作篇

posted @ 2005-12-02 11:07 Chandler.C 阅读(315) 评论(2) 编辑