将图片保存到XML文件的方法

一.保存图片到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 @ 2011-06-13 14:00  两色天  阅读(9813)  评论(0编辑  收藏  举报