在SQL数据库中使用图像列的C#Dataset GetXml方法

在SQL数据库中使用图像列的C#Dataset GetXml方法,c#,.net,serialization,dataset,C#,.net,Serialization,Dataset,我在SQL 2008 R2中有一个数据表,用于存储图像。上载的图像数据有一列,其SQL数据类型为“图像” 在asp.NET层,我将数据拉入数据集,然后调用GetXml()获取XML字符串,然后将XML放入文本文件中进行导入/导出 图像数据被序列化为文本,但我不知道它是如何编码的 表中的原始图像数据:0x89504E。。。。 我的XML字符串中的图像数据:iVBORw0KGgo 我需要恢复原始0x89504E的字符串表示形式。。。。我猜那是十六进制。iVBORw0KGgo是什么编码?我到处都找不到

我在SQL 2008 R2中有一个数据表,用于存储图像。上载的图像数据有一列,其SQL数据类型为“图像”

在asp.NET层,我将数据拉入数据集,然后调用GetXml()获取XML字符串,然后将XML放入文本文件中进行导入/导出

图像数据被序列化为文本,但我不知道它是如何编码的

表中的原始图像数据:0x89504E。。。。 我的XML字符串中的图像数据:iVBORw0KGgo

我需要恢复原始0x89504E的字符串表示形式。。。。我猜那是十六进制。iVBORw0KGgo是什么编码?我到处都找不到信息。

编码错误

以下代码获取一些二进制数据,将其放入数据集中,运行GetXml(),并将XML中的字符串解码为base64:

// Create a DataSet, DataTable, and define a binary column
DataSet dataSet = new DataSet("dataSet");
DataTable table = dataSet.Tables.Add("Items");
table.Columns.Add("image", typeof(byte[]));

/// Add one row of binary data (creating fake binary data from a string)
byte[] testData = new ASCIIEncoding().GetBytes("StackOverflow");
Console.WriteLine("Test data: " + new ASCIIEncoding().GetString(testData));
DataRow row = table.NewRow();
row["image"] = testData;
table.Rows.Add(row);

// Convert to XML and fetch the XML representation of the binary data
string xml = dataSet.GetXml();
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
string xmlImageData = doc.SelectSingleNode("//image").InnerText;
Console.WriteLine("XML data: " + xmlImageData);

// base64decode the XML data and print its value
byte[] decoded = Convert.FromBase64String(xmlImageData);
Console.WriteLine("Decoded data: " + new ASCIIEncoding().GetString(decoded));
输出:

Test data: StackOverflow
XML data: U3RhY2tPdmVyZmxvdw==
Decoded data: StackOverflow

我以为是这样的。当然,问题比这更大,但我能够拿下这篇文章,并通过整个过程取得成功。非常感谢。