首页  ·  知识 ·  云计算
ASP.NET保存图片到XML文件
佚名  http://www.cnblogs.com/nacarat/  综合  编辑:dezai  图片来源:网络
.保存图片到XML文件 1/**//// summary2/// 保存图片到XML文件3/// /summary4private vo

.保存图片到XML文件


 1/**////


 2/// 保存图片到XML文件
 3///

 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        /**////查找
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");//创建一个节点
36
37        XmlElement xesub1=xmlDoc.CreateElement("ImageID");
38       
39        /**////设置文本节点
40        xesub1.InnerText=nIndex.ToString();
41
42        /**////添加到节点中
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        /**////添加到节点中
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/**////


 2/// 从XML中读取图片
 3///

 4/// 图片ID
 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}

本文作者:佚名 来源:http://www.cnblogs.com/nacarat/
CIO之家 www.ciozj.com 微信公众号:imciow
   
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读