zoukankan      html  css  js  c++  java
  • 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();

      }

      }

     以上内容来自网络

     
  • 相关阅读:
    解决在QEMU上仿真STM32F429时出现的若干问题
    CentOS 7.1, 7.2 下安装dotnet core
    [尝鲜]妈妈再也不用担心 dotnet core 程序发布了: .NET Core Global Tools
    程序员节应该写博客之.NET下使用HTTP请求的正确姿势
    [开源 .NET 跨平台 Crawler 数据采集 爬虫框架: DotnetSpider] [五] 如何做全站采集?
    [开源 .NET 跨平台 Crawler 数据采集 爬虫框架: DotnetSpider] [一] 初衷与架构设计
    ubuntu15.10 或者 16.04 或者 ElementryOS 下使用 Dotnet Core
    解决 docker on windows下网络不通
    Orchestrator中 errant 的判断
    golang 中时间差的计算
  • 原文地址:https://www.cnblogs.com/Struts-pring/p/4250106.html
Copyright © 2011-2022 走看看