从mysql中检索blob并在asp.net c#和linq数据源中使用repeater显示
我已将图像手动存储在my category表中的字段categoryImage inLongblobdatatype inmysql数据库中。我添加了一个devart linq mysql模型来从数据库检索数据 我已经将一个linq数据源添加到一个中继器控件中,并希望直接从数据库中检索blob数据类型映像。当我写这段代码时从mysql中检索blob并在asp.net c#和linq数据源中使用repeater显示,c#,asp.net,mysql,linq-to-sql,repeater,C#,Asp.net,Mysql,Linq To Sql,Repeater,我已将图像手动存储在my category表中的字段categoryImage inLongblobdatatype inmysql数据库中。我添加了一个devart linq mysql模型来从数据库检索数据 我已经将一个linq数据源添加到一个中继器控件中,并希望直接从数据库中检索blob数据类型映像。当我写这段代码时 我得到一个System.Byte[]作为输出。有人建议我应该使用该方法将字节数组转换为图像 public System.Drawing.Image byteArra
我得到一个System.Byte[]作为输出。有人建议我应该使用该方法将字节数组转换为图像
public System.Drawing.Image byteArrayToImage (System.Byte[] ByteInArray)
{
MemoryStream ms = new MemoryStream(ByteInArray);
System.Drawing.Image returnimage = System.Drawing.Image.FromStream(ms);
return returnimage;
}
当我编写这段代码时,
给了我一个错误,byteArrayToImage(btye[])
有一些无效的参数。有人能帮我解决这个问题吗
提前谢谢 首先,您的标签似乎格式不正确:
<%# byteArrayToImage(Eval("CategoryImage") %>
应该是:
<%# byteArrayToImage(Eval("CategoryImage")) %>
另外,Eval
方法返回object
,byteArrayToImage
方法参数的类型为System.Byte[]
,因此必须将其强制转换为正确的类型
此外,如果您明确说明应用byteArrayToImage
方法返回值的元素,则效果会更好。它可能无法在System.Drawing.Image
的实例中正常工作
如果您试图创建,该控件仅支持通过URL加载图像
另一种方法是为图像创建自定义HTTP处理程序,或者创建一个包含图像内容的文件,并将URL提供给
控件。当图像存储在数据库中时,我应该使用HTTP处理程序,还是只需修改代码隐藏文件以使用system.web.ui.WebControl.image。。对于这一点,更好的方法是什么?因为我必须从长blob数据类型的数据库本身检索图像。对于这两种解决方案,您必须使用图像控件。就我个人而言,我将创建一个HTTP处理程序,该处理程序将接收一个GET参数,该参数指示从数据库获取哪个图像,然后加载并返回它。我会在需要显示这些图像的页面上使用这个处理程序。