将一个图片以二进制值的形式存入Xml文档中

本文介绍如何使用Base64编码将二进制文件转换为文本格式,并嵌入到XML文档中。通过.NET Framework的示例代码,展示了从二进制文件读取数据并将其编码为Base64的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二进制编码
 
有少量的方法可以让你将二进制的数据编码为文本数据。基本上,这个处理使用一个相对简单的算法将二进制数据修改为ASCII字节。两个最流行的二进制编码算法是Uuencode和base64编码。 
二进制编码的一个称为MIME的扩展版本用来添加文件的编码信息(例如文件名)。编码程序很容易得到,一般是作为共享软件和编程工具。下面是将一个二进制编码的文件嵌入XML文档的例子: 

<Product>
  <SKU>99238</SKU>
  <Description>Super Gidgetidoo</Description>
  <Picture>
Content-Description: File encoded with ENCODE64.EXE.
Content-Disposition: attachment; filename="foo.zip"
Content-Transfer-Encoding: BASE64
Content-Type: application/octet-stream

UEsDBBQAAAAIAGtaMS2/u6RnIAAAAIYAAAAKAAAAYm
l0bWFwLmJtcHPybWOAADMg1gBiVihm
ZJAAiwcA8RE+CIaB/6iAYj4AUEsBAhQAFAAAAAgAa1oxLb+7
pGcgAAAAhgAAAAoAAAAAAAAA
AAAgALaBAAAAAGJpdG1hcC5ibXBQSwUGAAAAAA
EAAQA4AAAASAAAAAAA
  </Picture>
</Product>


例:


try
   {
    int readbyte = 0;        //
    int bytestoread = 100;       //数据缓冲区大小
    string filename = "../../writexml.xml";   //要打开的文档
    //   this.textbox1.text = string.empty;           

    // 打开图片文档,利用该图片构造一个文档流
    filestream fs = new filestream("../../001.jpg",filemode.open);
    // 使用文档流构造一个二进制读取器将基元数据读作二进制值
    binaryreader br = new binaryreader(fs);


    xmltextwriter xmltxtwt = new xmltextwriter(filename,encoding.utf8);
    //输出配置 代码缩进
    xmltxtwt.formatting = formatting.indented;
    //   xmltxtwt.indentation = 4;

    //书写声明
    xmltxtwt.writestartdocument();
    xmltxtwt.writestartelement("picture","contactdetails","http://www.deltabis.com/contact");//定义命名空间
    xmltxtwt.writestartelement("image");            //定义节点
    xmltxtwt.writeattributestring("imagename","002.jpg");        //添加图片属性

    byte[] base64buffer = new byte[bytestoread];          //开辟缓冲区
    do
    {
     readbyte = br.read(base64buffer,0,bytestoread);      //将数据读入字节数组
     xmltxtwt.writebase64(base64buffer,0,readbyte);       //将数组中二进制值编码为base64并写出到xml文档

    }while(bytestoread <= readbyte);


    xmltxtwt.writeendelement();
    xmltxtwt.writeendelement();
    xmltxtwt.writeenddocument();


//    xmltxtwt.flush();
    xmltxtwt.close();

    messagebox.show("读写结束!");

    //   this.textbox1.text = readxml(filename);
   }
   catch(exception ex)
   {
    messagebox.show(ex.tostring());
   }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值