【发布时间】:2014-05-26 19:02:23
【问题描述】:
我正在尝试将来自 MySQL 数据库的 BLOB 数据转换为 Base64,然后将其显示为 jpg 图像。这是正在使用的代码:
using (MySql.Data.MySqlClient.MySqlConnection connection = new MySql.Data.MySqlClient.MySqlConnection("S;Port=P;Database=DB;Uid=U;Pwd=P"))
{
connection.Open();
MySql.Data.MySqlClient.MySqlCommand cmd = connection.CreateCommand();
cmd.CommandText = "SELECT blobValue FROM Table WHERE blob_id = '333'";
MySql.Data.MySqlClient.MySqlDataReader datr = cmd.ExecuteReader();
if (datr.Read())
{
byte[] xx = (byte[])datr.GetValue(0);
string base64String = Convert.ToBase64String(xx, 0, xx.Length);
Image1.ImageUrl = "data:image/jpg;base64," + base64String;
}
我猜代码没有问题,但是在运行代码时我得到一张空白图片,就像这张 -->
请帮忙。
【问题讨论】:
-
你一步步调试你的代码了吗?调试时 Image1.ImageUrl 的确切值是多少?你确定这张图片可用吗?您确定您的
blob_id列不是数字类型吗? -
@SonerGönül,blob_id 是“varchar”类型,是的,我调试了代码。
-
base64String 的长度是多少?这是任何浏览器还是仅在 IE 中不起作用?如果您将
byte[] xx写入文件,它会在Paint 中显示图像吗? -
@rene,我不知道 base64String 的长度。我也在使用 chrome 来运行网站,我尝试使用在线工具将该字节转换为图像,它也没有显示任何内容!。
-
在即时窗口中执行 base64String.Length。在您执行 GetValue 后添加呼叫
File.WriteAllBytes(@"c:\some\path\file.jpeg",xx);。在 mspaint 中打开 file.jpeg。
标签: c# mysql visual-studio-2012 base64 blob