在 ExtJs 网格 (C#) 中显示来自 SQL Server 数据库的图像的优雅方式

本文关键字:数据库 SQL Server 图像 方式 网格 ExtJs 显示 | 更新日期: 2023-09-27 18:34:55

我在数据库中存储了一些图标(我不希望客户端丢失他的图标,这就是为什么我不将它们存储在磁盘上 - 一些 5KB 的 png 没什么大不了的(,我需要显示在网格中,用户可以从中删除一个矿石上传其他一些。我设法通过将二进制图像转换为其 Base64 表示形式(在服务器上(来显示网格中的图标,如下所示:(我的 JsonHelper 的一部分,它从 DataTable 返回 ExtJs 网格存储 Json(

if (dt.Columns[j].DataType == Type.GetType("System.Byte[]"))
{
   byte[] byteArray = (Byte[])rows[i][j];
   //tempStr is the Json string i am building
   tempStr = tempStr.Replace(dt.Columns[j].ToString().ToLower(),
             Convert.ToBase64String(byteArray, 0, byteArray.Length));
}
然后,在

客户端,在网格中,我像这样呈现列图标:

renderIcon: function (value)
{
   return '<img src="data:image/jpeg;base64,' + value + '" style = "margin-left: 5px; height: 24px; width: 24px;"/>';
}

一切正常,但在我看来这不是一种优雅的方式(例如,如果我想从网格中选择一个图标并将其放入容器中,我必须在该容器中添加一个标签,其中包含"指向"图像的 html,因为我没有实际的图像来处理 img xtype(

这能以更优雅/适当的方式完成吗?我正在使用ExtJs 4.0.7,SQL server 2008和 asp.net。

在 ExtJs 网格 (C#) 中显示来自 SQL Server 数据库的图像的优雅方式

由于您使用的是 ASP.NET,最简单的方法是创建 ashx 处理程序。可以在 - 使用 ashx 处理程序显示图像中找到示例实现

使用 ashx 处理程序,可以在图像的源中提供 URL。

图像名称保存在应用数据库中,并创建一个获取请求表单服务器以在要显示的位置显示图像。