• 将图片保存到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();
        }

    }
  • 相关阅读:
    钓鱼
    Webpack3.x升级至 4.x 小记
    设计模式六大原则(总结)
    Spring Data RedisTemplate抛出SerializationException
    pcap文件过滤、分割、合并处理工具
    如何查看Linux服务器的负载
    java8 List按照两个属性第一个属性升序排序第二个属性降序排序
    什么是云原生
    vuecli创建vue3项目
    nfs 问题汇总
  • 原文地址:https://www.cnblogs.com/51net/p/2524735.html
Copyright © 2020-2023  润新知