【问题标题】:Converting BLOB Data Into base64 and Then Display it将 BLOB 数据转换为 base64 并显示
【发布时间】: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


【解决方案1】:

使用以下代码。

public string BlobToStringConverter(OracleDbType.Blob blobObject){
    if (blobObject != null){
        return  Encoding.UTF8.GetString((byte[])(blobObject));
    } else {
        return string.Empty; 
    }
}

【讨论】:

    猜你喜欢
    • 2013-09-10
    • 2021-09-22
    • 1970-01-01
    • 2012-07-29
    • 2021-07-27
    • 2021-06-20
    • 1970-01-01
    • 2015-03-14
    • 2019-11-18
    相关资源
    最近更新 更多