一.保存图片到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();

  }

  }

以上内容来自网络

 
 

最新文章

  1. Linux课程实践二:编译模块实现内核数据操控
  2. AC日记——忽略大小写的字符串比较 openjudge 1.7 16
  3. html+css复习之第1篇
  4. 改变HTML
  5. jmeter测试某个QPS下的响应时间-设置QPS限制
  6. (转)IOS内存管理 retain release
  7. VMware的CentOS无法上网的解决方法
  8. 动态分析maillog日志,把恶意链接直接用防火墙禁止
  9. MATLAB下跑Faster-RCNN+ZF实验时如何编译自己需要的external文件
  10. MacOS App代码申请管理员权限
  11. 设置布局默认为LinearLayout,却成了RelativeLayout
  12. NoSQL入门
  13. HTTPS的内网访问和访问外网
  14. 类型,对象,线程栈,托管堆在运行时的关系,以及clr如何调用静态方法,实例方法,和虚方法(第二次修改)
  15. 实现多线程爬取数据并保存到mongodb
  16. eclipse default handler IHandler interface &ldquo;the chosen operation is not enabled&rdquo;
  17. http模拟登陆及发请求
  18. 使用VS Code开发.Net Core 2.0 MVC Web应用程序教程之一
  19. 用Python做一个翻译软件
  20. QXDM及QCAT软件使用入门指南V1.0

热门文章

  1. UI3_视图切换
  2. Eclipse的常用快捷方式
  3. WebServiceException
  4. POD数据了解
  5. HDU 2571
  6. [windows phone开发]新生助手的开发过程与体会三
  7. EDK中如何使用ISE中生成的IP
  8. 命名空间 和 class_exist() 问题
  9. 使用MongoDB的开源项目
  10. PHP连接SQL Server(sqlsrv)