在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选项在你手中:
-
“播放”您的响应服务图像文件:
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来提供图像文件