2

所以我有这个方法:

    string sql = string.Format("EXECUTE getPlayerImage @playerID = '{0}'", bio.playerID);


    SqlCommand cm = baseballConnection.CreateCommand();

    baseballConnection.Open();
    cm.CommandText = sql;
    baseballConnection.Close();
    return cm.ExecuteScalar() as byte[];

它有效,至少我没有错误。但现在我只有一个字节数组,我怎样才能在屏幕上显示它?我在屏幕上有一个图像工具,但我知道如何显示图像的唯一方法是它是否保存在服务器上并具有文件路径。我不知道如何将字节数组保存到服务器,但这会很麻烦,而且我已经将图像作为 varbinary 保存在数据库中并现在检索它是没有意义的。

我怎样才能让这个字节数组显示?

4

2 回答 2

2

要在 asp.net 中呈现图像,您必须创建一个 asp.net 页面或通用处理程序来保存输出响应流中的字节。

然后,您将设置 HTML 图像或控件以链接到页面或通用处理程序。

例如,

<img src="getimage.aspx?id=1" style="width:100px; height:100px" alt="" />

所以在你的情况下,它会是这样的:

using System.Web;

namespace ImageUtil
{
    public class ImageProvider : IHttpHandler
    {
        publicvoid ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "image/jpeg";

            string sql = string.Format("EXECUTE getPlayerImage @playerID = '{0}'", bio.playerID);

            SqlCommand cm = baseballConnection.CreateCommand();
            baseballConnection.Open();
            cm.CommandText = sql;
            byte[] img = (byte[])cm.ExecuteScalar();
            baseballConnection.Close();

            context.Response.BinaryWrite(img);
        }

        publicbool IsReusable
        {
            get
            {
                returnfalse;
            }
        }
    }
}

这是一个链接: http ://samiradel.wordpress.com/2011/08/03/how-to-display-image-byte-array-in-a-an-img-tag/

于 2013-06-05T18:45:27.477 回答
0

你试过 Response.BinaryWrite 吗?

http://msdn.microsoft.com/en-us/library/ms524318%28v=VS.90%29.aspx

于 2013-06-05T18:30:56.320 回答