zoukankan      html  css  js  c++  java
  • ASP.NET中常用功能代码总结(4)——保存图片到XML文件

    ASP.NET中常用功能代码总结(4——保存图片到XML文件

    整理:Terrylee

    一.保存图片到XML文件

     1/// <summary>
     2/// 保存图片到XML文件
     3/// </summary>

     4private void UploadImageToXml()
     5{
     6    ///得到用户要上传的文件名
     7    string strFilePathName = loFile.PostedFile.FileName;
     8    string strFileName = Path.GetFileName(strFilePathName);
     9    int FileLength = loFile.PostedFile.ContentLength;
    10    if(FileLength<=0)
    11        return;
    12    try
    13    {    
    14        ///图象文件临时储存Byte数组
    15        Byte[] FileByteArray = new Byte[FileLength]; 
    16
    17        ///建立数据流对像
    18        Stream StreamObject = loFile.PostedFile.InputStream; 
    19
    20        ///读取图象文件数据,FileByteArray为数据储存体,0为数据指针位置、FileLnegth为数据长度
    21        StreamObject.Read(FileByteArray,0,FileLength); 
    22
    23        ///要打开的文件
    24        string fileName = Server.MapPath(".\\WriteXml.xml");   
    25    
    26        XmlDocument xmlDoc = new XmlDocument();
    27        xmlDoc.Load(fileName);
    28
    29        ///查找<dbGuest>
    30        XmlNode root=xmlDoc.SelectSingleNode("dbImage");
    31        XmlNodeList xnl=xmlDoc.SelectSingleNode("dbImage").ChildNodes;
    32        int nIndex = xnl.Count;
    33
    34        ///以下添加新结点
    35        XmlElement xe1=xmlDoc.CreateElement("Image");//创建一个<User>节点
    36
    37        XmlElement xesub1=xmlDoc.CreateElement("ImageID");
    38        
    39        ///设置文本节点
    40        xesub1.InnerText=nIndex.ToString();
    41
    42        ///添加到<User>节点中
    43        xe1.AppendChild(xesub1);
    44        XmlElement xesub2=xmlDoc.CreateElement("ImageContentType");
    45        xesub2.InnerText=loFile.PostedFile.ContentType;
    46        xe1.AppendChild(xesub2);
    47        XmlElement xesub3=xmlDoc.CreateElement("ImageSize");
    48        xesub3.InnerText=FileLength.ToString();
    49        xe1.AppendChild(xesub3);
    50        XmlElement xesub4=xmlDoc.CreateElement("ImageDescription");
    51        xesub4.InnerText=tbDescription.Text;
    52        xe1.AppendChild(xesub4);
    53        XmlElement xesub5=xmlDoc.CreateElement("ImageData");
    54        xesub5.InnerText= Convert.ToBase64String(FileByteArray);
    55        xe1.AppendChild(xesub5);
    56        
    57        ///添加到<dbGuest>节点中
    58        root.AppendChild(xe1);
    59        xmlDoc.Save(fileName);
    60    
    61        Response.Redirect("ShowAllImg.aspx");
    62    }

    63    catch(Exception ex)
    64    {
    65        throw ex;
    66    }

    67}

    二.从XML中读取图片数据

     1/// <summary>
     2/// 从XML中读取图片
     3/// </summary>
     4/// <param name="ImageID">图片ID</param>

     5private void ReadImageFromXml(string ImageID)
     6{    
     7    ///ID为图片ID
     8    int ImgID = Convert.ToInt32(ImageID); 
     9
    10    ///要打开的文件
    11    string fileName = Server.MapPath(".\\WriteXml.xml");  
    12    
    13    XmlDocument xmlDoc = new XmlDocument();
    14    xmlDoc.Load(fileName);
    15    XmlNodeList node =  xmlDoc.SelectSingleNode("//Image[ImageID='"+ImgID.ToString()+"']").ChildNodes;
    16    if(node!=null)
    17    {
    18        string strType = node.Item(1).InnerText;
    19        string strData =node.Item(4).InnerText;
    20        int nSize = int.Parse(node.Item(2).InnerText);
    21        
    22        ///设定输出文件类型
    23        Response.ContentType = strType;
    24
    25        ///输出图象文件二进制数制
    26        Response.OutputStream.Write(Convert.FromBase64String(strData), 0, nSize); 
    27        Response.End();
    28
    29        //也可以保存为图像
    30        //FileStream fs = new FileStream(@"C:\aa.BMP", FileMode.OpenOrCreate, FileAccess.Write);
    31        //fs.Write((Convert.FromBase64String(strData), 0,nSize);
    32        //fs.Close();
    33    }

    34}
    支持TerryLee的创业产品Worktile
    Worktile,新一代简单好用、体验极致的团队协同、项目管理工具,让你和你的团队随时随地一起工作。完全免费,现在就去了解一下吧。
    https://worktile.com
  • 相关阅读:
    windows下运行命令行mysql,提示mysql不是内部命令,解决办法
    XML和HTML的区别
    BZOJ4695 最假女选手(势能线段树)
    BZOJ5312 冒险(势能线段树)
    洛谷P3959 宝藏(NOIP2017)(状压DP,子集DP)
    区间子集最大/最小异或和问题(线性基,树上差分)
    线性基模板(线性基)
    分数模板(C++模板)
    洛谷P2516 [HAOI2010]最长公共子序列(LCS,最短路)
    组合数学知识要点
  • 原文地址:https://www.cnblogs.com/Terrylee/p/288258.html
Copyright © 2011-2022 走看看