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

发表于:2009-12-11 10:57

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

#
DotNet
#
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();
  }
  }

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号