所以我有这个方法:
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[];
并且它有效,至少我没有错误。但现在我所拥有的只是一个字节数组,如何在屏幕上显示?我在屏幕上有一个图像工具,但我知道如何显示图像的唯一方法是它是保存在服务器上还是有文件路径。我不知道如何将字节数组保存到服务器,但这会让它变得干扰,并且没有必要将我已经将数据保存在db中作为varbinary并现在检索它。
我怎样才能显示这个字节数组?
答案 0 :(得分: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/
答案 1 :(得分:0)
您是否尝试过Response.BinaryWrite?
http://msdn.microsoft.com/en-us/library/ms524318%28v=VS.90%29.aspx