0

images在 SQL Server 2008 中有一个表,它包含两列imageidimage. 我可以使用已转换为二进制形式进行存储image的控制器和图像将图像插入列中。FileUpload现在我想在与图像 id 对应的图像框中显示图像。我正在使用一个文本框让用户输入id和一个按钮来执行显示命令。

public void ShowImage()
{
        SqlConnection con = new SqlConnection();
        con.ConnectionString = System.Configuration.ConfigurationManager.AppSettings["anu"].ToString();
        SqlCommand cmd = new SqlCommand();
        cmd.CommandText = "Select ID,Image from Images where ID=" + txtid.Text;
        cmd.CommandType = System.Data.CommandType.Text;
        cmd.Connection = con;
        con.Open();
        SqlDataReader dreader = cmd.ExecuteReader();
        dreader.Read();
        Context.Response.BinaryWrite((byte[])dreader["image"]);
        dreader.Close();
        con.Close();
}

此代码工作正常,但它将图像加载到单独的页面中,但我需要将其显示在特定的图像框中。我的前端是 ASP.NET。如果有人知道答案,请帮助我。

4

2 回答 2

0

而不是Response.Write将字节数组存储在会话中

Session["image"]=(byte[])dreader["image"];

使用它作为你的来源image

byte[] imgSrc=(byte[])Session["image"]
string imgSrcStr= Convert.ToBase64String(imgSrc);
string imageSrc = string.Format("data:image/gif;base64,{0}", imgSrcStr);

In the view:

<img src='"<%=imageSrc%>"' />

或者只是在你的函数本身中完成所有这些,而不是Response

于 2013-08-02T06:43:29.387 回答
0

首先,您应该真正在查询(或存储过程)中使用参数

您可以从二进制数据创建一个图像,并使用正确的图像格式将其保存到输出流。

var ms = new MemoryStream((byte[])dreader["image"]);
var image = Image.FromStream(ms);
Context.Response.ContentType = "image/jpeg"; //or your actual imageformat
image.Save(Context.Response.OutputStream, format);
于 2013-08-02T07:01:15.920 回答