当前,我们正在将图像保存为数据库中的图像,因为它们的大小已调整为更小以至于不会占用所有太多空间。我们需要在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
答案 0 :(得分:0)
我不知道从mysql内部访问blob存储的任何方式。但是,我确实可以解决该问题。
为什么不在数据库中存储图像的ID。确保Blob容器具有读取公共访问权限。在报告内部,您可以有一个类似“ https://myblob.blob.azure.net/container/ {id}”的链接,然后只需将{id}替换为从数据库中检索到的ID?