Метод GetXml набора данных C # с использованием столбца Image в базе данных SQL - PullRequest
0 голосов
/ 15 февраля 2012

У меня есть таблица данных в SQL 2008 R2, которая используется для хранения изображений.Существует один столбец для выгруженных данных изображения, тип данных SQL которого «Image»

. На уровне asp.NET я перетаскиваю данные в набор данных, а затем вызываю GetXml (), чтобы получить строку XML, а затем помещаю xml.в текстовый файл для импорта / экспорта.

Данные изображения сериализуются в текст, но я не могу понять, как они кодируются.

Исходные данные изображения в таблице: 0x89504E ...Данные изображения в моей строке XML: iVBORw0KGgo ...

Мне нужно восстановить строковое представление исходного 0x89504E .... и я предполагаю, что это HEX.Какая кодировка iVBORw0KGgo ...?Я нигде не могу найти информацию.

1 Ответ

0 голосов
/ 15 февраля 2012

Кодировка: base64 .

Следующий код принимает некоторые двоичные данные, помещает их в DataSet, запускает 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...