0

我已在mysql 数据库中的类别表中的Longblob数据类型中的字段 categoryImage 中手动存储图像。我添加了一个 devart linq-mysql 模型来从数据库中检索数据。

我已将linq 数据源添加到转发器控件,并希望直接从数据库中检索 blob 数据类型图像。当我写这段代码时
<%# Eval("CategoryImage" %>

我得到一个 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(Eval("CategoryImage") %> ,它给了我一个byteArrayToImage(btye[])包含一些无效参数的错误。谁能帮我解决这个问题。

提前致谢..

4

1 回答 1

1

首先,您的标签似乎格式不正确:

<%# byteArrayToImage(Eval("CategoryImage") %>

应该:

<%# byteArrayToImage(Eval("CategoryImage")) %>

此外,Eval方法返回objectbyteArrayToImage方法参数是 type System.Byte[],因此您必须将其强制转换为正确的类型。

此外,如果您明确说明您正在应用byteArrayToImage方法返回值的元素会更好。它可能无法与System.Drawing.Image.

如果尝试<asp:Image>基于. System.Drawing.Image

另一种方法是为您的图像创建自定义 HTTP 处理程序,或创建包含图像内容的文件并将 URL 提供给<asp:Image>控件。

于 2013-03-05T22:28:21.347 回答