2012-02-14 9 views
0

イメージを格納するために使用されるSQL 2008 R2のデータテーブルがあります。 SQLデータ型が "Image"のアップロードされたイメージデータの列が1つありますC#Dataset SQLデータベースのImage列を使用したGetXmlメソッド

asp.NETレイヤーでデータセットにデータをプルし、GetXml()を呼び出してXML文字列を取得し、xmlをインポート/エクスポート用のテキストファイル。

イメージデータはテキストにシリアル化されていますが、どのようにエンコードされているのかわかりません。

テーブル内のオリジナル画像データ:0x89504E ....私のXML文字列に 画像データ:iVBORw0KGgo ...

私は、元0x89504Eの文字列表現を回復する必要があります....と私は仮定それは16進数です。 iVBORw0KGgoはどのようなエンコーディングですか?私はどこにでも情報を見つけることができません。

答えて

0

エンコードはbase64です。

次のコードは、GETXML()が実行され、データセットにそれを置く、いくつかのバイナリデータを受け取り、BASE64としてXMLの文字列をデコード:私は思っ

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

// 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)); 

出力そうだった。問題は当然これよりも大きいですが、私はこの作品を手に入れて、すべてを成功に導くことができました。ありがとうございました。 – user1210039

関連する問題