目前我们正在将数据保存在我们的数据库中作为blob,它们已被调整为小得多,不占用太多空间。我们需要在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中得到了这个
我不知道从mysql里面访问blob存储的方法。但是我确实有可能解决这个问题。
为什么不在数据库中存储图像的id。确保blob容器已读取公共访问权限。在报告内部,您可以使用“https://myblob.blob.azure.net/container/ {id}”之类的链接,然后将{id}替换为从数据库中检索到的ID?