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();

      }

      }

     以上内容来自网络

     
  • 相关阅读:
    流程图如何画
    flex布局
    css函数
    常用的Array相关的属性和方法
    判断一个字符串中出现次数最多的字符,统计这个次数
    css溢出滚动条及去除滚动条的方法
    vue生命周期
    css中添加屏幕自适应方法(rem)
    vue-cli中配置屏幕自适应(px2rem)
    关于解决项目运行时出现的缓存问题
  • 原文地址:https://www.cnblogs.com/Struts-pring/p/4250106.html
Copyright © 2011-2022 走看看