C# 在ExtJs网格中显示SQL Server数据库中的图像的优雅方式(C)
我有一些图标存储在数据库中,我不希望客户端丢失他的图标,这就是为什么我不将它们存储在磁盘上-一些5KB的png不是什么大问题,我需要显示在网格中,用户可以从中删除一个或上传一些其他图标。 通过在服务器上将二进制图像转换为Base64表示形式,我成功地在网格中显示图标,如下所示: JsonHelper的一部分,它从数据表返回ExtJs网格存储JsonC# 在ExtJs网格中显示SQL Server数据库中的图像的优雅方式(C),c#,database,image,extjs,grid,C#,Database,Image,Extjs,Grid,我有一些图标存储在数据库中,我不希望客户端丢失他的图标,这就是为什么我不将它们存储在磁盘上-一些5KB的png不是什么大问题,我需要显示在网格中,用户可以从中删除一个或上传一些其他图标。 通过在服务器上将二进制图像转换为Base64表示形式,我成功地在网格中显示图标,如下所示: JsonHelper的一部分,它从数据表返回ExtJs网格存储Json if (dt.Columns[j].DataType == Type.GetType("System.Byte[]")) { byte[] b
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。由于您使用的是asp.net,最简单的方法是创建ashx处理程序。示例实现可在以下位置找到:
使用ashx处理程序,您可以在图像的源中提供URL。您可以将图像名称保存在应用程序数据库中,并创建一个Get请求表单服务器,以便在您想要显示的位置显示图像 为指向流式处理图像内容的服务器端模板的image xtype提供URL怎么样?将PNG像其他人一样存储在磁盘上并将其签入代码repo怎么样?我在DB中有图像的名称。所以,如果我有100个图像要显示在我的网格中,我将不得不发出100个服务器请求?到目前为止,我只是在JS文件中有一个ExtJs图像组件或带有html的标签。我该怎么办?在本地保存文件,然后只返回图像的物理路径,这样的想法怎么样?