这里值得一提的是,web控件image不像winForm控件那样可以通过读取二进制流赋值给image属性来显示图像。可以通过变通的方法来实现,流行的做法是新建一个页面专门用来显示图像,这里代码直接用孟子E章前辈的(作了小修改,主要是剔除78个byte字节流来正常显示northwind数据库的图片): ReadImage.aspx.cs
复制代码 代码如下: using System; using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; using System.Data.SqlClient;
namespace WebApplication2 { public partial class ReadImage : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string strImageID = Request.QueryString["id"]; SqlConnection myConnection = new SqlConnection("Data Source=.;Initial Catalog=northwind;User Id=sa;Password=123456;"); SqlCommand myCommand = new SqlCommand("Select Picture from Categories Where CategoryID=" + strImageID, myConnection);
try { myConnection.Open(); SqlDataReader myDataReader; myDataReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection); if (myDataReader.Read()) { Response.Clear();
Response.ContentType = "image/jpeg"; byte[] b = (byte[])myDataReader["Picture"]; //下面的方法就是用来让图片可以正常显示 byte[] temp=new byte [b.Length -78]; Array.Copy(b, 78, temp, 0, b.Length - 78); Response.BinaryWrite(temp); } myConnection.Close(); } catch (SqlException SQLexc) { Response.Write(SQLexc.ToString ()); } Response.End();
} } }
在源页面如Default.aspx.cs可以通过下面方法调用
复制代码 代码如下: protected void Page_Load(object sender, EventArgs e) { if(!IsPostBack ) Image1.ImageUrl = FormatURL("1");
} protected string FormatURL(string strArgument) { return "ReadImage.aspx?id=" + strArgument; }
如果不想新建一个页面来承载图像,也可以使用下面的方法:(注意:下面的类是自定义的,大家看得懂这个方法就可以了)
复制代码 代码如下: using System; using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; using System.Data.SqlClient;
namespace WebApplication2 { public partial class ReadImage : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string strImageID = Request.QueryString["id"]; SqlConnection myConnection = new SqlConnection("Data Source=.;Initial Catalog=northwind;User Id=sa;Password=123456;"); SqlCommand myCommand = new SqlCommand("Select Picture from Categories Where CategoryID=" + strImageID, myConnection);
try { myConnection.Open(); SqlDataReader myDataReader; myDataReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection); if (myDataReader.Read()) { Response.Clear();
Response.ContentType = "image/jpeg"; byte[] b = (byte[])myDataReader["Picture"]; byte[] temp=new byte [b.Length -78]; Array.Copy(b, 78, temp, 0, b.Length - 78); Response.BinaryWrite(temp); } myConnection.Close(); } catch (SqlException SQLexc) { Response.Write(SQLexc.ToString ()); } Response.End();
} } }
(编辑:焦作站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|