在asp.net中从数据库中检索图像

如何使用C#从asp.net中的sql数据库检索图像。

我想从数据库中检索图像文件,然后在标签中显示图像。

我尝试这个代码,但它不工作

ASPX

<asp:Image ID="Image1" runat="server" ImageUrl="" Height="150px" Width="165px" /> 

后面的代码

  Byte[] bytes = (Byte[])ds.Tables[0].Rows[0]["image"]; Response.Buffer = true; Response.Charset = ""; Response.Cache.SetCacheability(HttpCacheability.NoCache); Response.ContentType = "image/jpg"; Response.BinaryWrite(bytes); Response.Flush(); Response.End(); 

如何给这个图片的ImageUrl=""链接?

创build一个generic http handler如下

 using System; using System.Configuration; using System.Web; using System.IO; using System.Data; using System.Data.SqlClient; public class ShowImage : IHttpHandler { public void ProcessRequest(HttpContext context) { Int32 empno; if (context.Request.QueryString["id"] != null) empno = Convert.ToInt32(context.Request.QueryString["id"]); else throw new ArgumentException("No parameter specified"); context.Response.ContentType = "image/jpeg"; Stream strm = ShowEmpImage(empno); byte[] buffer = new byte[4096]; int byteSeq = strm.Read(buffer, 0, 4096); while (byteSeq > 0) { context.Response.OutputStream.Write(buffer, 0, byteSeq); byteSeq = strm.Read(buffer, 0, 4096); } //context.Response.BinaryWrite(buffer); } public Stream ShowEmpImage(int empno) { string conn = ConfigurationManager.ConnectionStrings["EmployeeConnString"].ConnectionString; SqlConnection connection = new SqlConnection(conn); string sql = "SELECT empimg FROM EmpDetails WHERE empid = @ID"; SqlCommand cmd = new SqlCommand(sql,connection); cmd.CommandType = CommandType.Text; cmd.Parameters.AddWithValue("@ID", empno); connection.Open(); object img = cmd.ExecuteScalar(); try { return new MemoryStream((byte[])img); } catch { return null; } finally { connection.Close(); } } public bool IsReusable { get { return false; } } } 

并显示图像如下

  Image1.ImageUrl = "~/ShowImage.ashx?id=" + id; 

下面有一些链接
在数据库中显示GridView中的图像?
如何在Asp.net的图像控件中显示数据库中的图像?
使用C#在ASP.net中显示数据库中的图像
http://www.dotnetcurry.com/ShowArticle.aspx?ID=129

我不认为这是正确的做法。 你不应该把图像embedded到html中,反正这是不正确的。

我build议添加一个ashx(generics处理程序),并使用它从查询string生成图像,然后在页面中使用类似的东西

 <asp:Image ImageUrl='GetImage.ashx?id=12345' ... /> 

2选项在你手中:

  1. “播放”您的响应服务图像文件:

    byte [] picture =(Byte [])ds.Tables [0] .Rows [0] [“image”]; Response.ContentType =“images / jpeg”; Response.BinaryWrite(图片);

如果你的aspx文件名为: ShowImg.aspx ,你可以从你的img标签中引用它:

 <img src="ShowImg.aspx?imgId=[id]"/> 

这里最重要的是响应的ContentType属性,它应该是: images/jpeg

2.实现和使用IHttpHandler ,它将会照顾dynamic创build图像的响应。 您可以在这里阅读关于它的信息: 使用HttpHandlers来提供图像文件