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

    }
  • 相关阅读:
    poj2082单调栈
    Javascript权威指南——第二章词法结构,第三章类型、值和变量,第四章表达式和运算符,第五章语句
    Javascript权威指南——第一章Javascript概述
    前端工程师理解
    easyui tree获取直接子节点而不获取孙子节点方法
    centos linux安装telnet 过程及问题(源于内部tomcat网站,外部无法访问)
    AspectJ基础学习之三HelloWorld(转载)
    AspectJ基础学习之二搭建环境(转载)
    AspectJ基础学习之一简介(转载)
    js数组特定位置元素置空,非null和undefined,实现echarts现状图效果;谷歌格式化压缩js代码
  • 原文地址:https://www.cnblogs.com/51net/p/2524735.html
Copyright © 2011-2022 走看看