如何在Crystal Report中显示从mysql作为Blob检索的图像?

时间:2019-04-24 12:45:20

标签: c# asp.net-mvc crystal-reports

当前,我们正在将图像保存为数据库中的图像,因为它们的大小已调整为更小以至于不会占用所有太多空间。我们需要在Crystal Report Viewer(Crystal Report Viewer 13)上显示图像,然后从MYSQL数据库检索该图像并将其转换为byte [],而我的数据集具有一列System.Byte [],但是Crystal Report Viewer仍然什么也没显示。我还没有找到解决方案。

我尝试使用OLE对象,但没有成功,并尝试将图片链接到数据集列,但没有成功。

我一直得到的结果是空白字段。还尝试查看将其导出到PDF时是否显示,但在那里也显示空白。结果应该是存储在数据库中的图像

这就是我从MYSQL数据库检索blob的方式

clsDataAccess getData = new clsDataAccess(System.Configuration.ConfigurationManager.ConnectionStrings["PAW.Data"].ConnectionString);
                getData.SQLCommand.CommandText = "SELECT * from userimages where UserName = ?";
                getData.SQLCommand.Parameters.Add("", OdbcType.VarChar).Value = UserName;
                System.Data.DataTable tblData = getData.PopulateDataTableWithParameters();
                if (tblData.Rows.Count > 0)
                {
                    foreach (System.Data.DataRow item in tblData.Rows)
                    {
                        userImage.Name = item["Name"].ToString();
                        userImage.ContentType = item["Content"].ToString();
                        object LogoTest = item["Data"];
                        userImage.Data = (byte[])item["Data"];
                    }
                }

当我检查图像时,我会在控制台中得到它  http://localhost:31720/Areas/Administration/ReportsASPX/CrystalImageHandler.aspx?dynamicimage=cr_tmp_image_14fda631-5f94-4fa2-8419-f95f447fe08b.png

1 个答案:

答案 0 :(得分:0)

我不知道从mysql内部访问blob存储的任何方式。但是,我确实可以解决该问题。

为什么不在数据库中存储图像的ID。确保Blob容器具有读取公共访问权限。在报告内部,您可以有一个类似“ https://myblob.blob.azure.net/container/ {id}”的链接,然后只需将{id}替换为从数据库中检索到的ID?