ReadImage.aspx页面
单独输出二进制流图片的页面,引用传来的参数 ImageID,如 ReadImage.aspx?ImageID=0001
写法1:
if(!IspostBack)
{
string sqlconnstr=ConfigurationManager.ConnectionStrings["strconn"].connectionstring.Tostring();
using (SqlConnection conn =new SqlConnection(sqlconnstr))
{
int ImgID = Convert.ToInt32(Request.QueryString["ImageID"]);
conn.Open();
SqlCommand cmd =new SqlCommand();
cmd.Connection = conn;
cmd.CommandText ="select User_ImgContent from tbl_FriendsUser where User_ImgId=@ImgId";
cmd.parameters.add()=ImgId;
SqlDataReader reader = cmd.ExecuteReader();
reader.Read();
Response.ContentType ="application/octet-stream"; //application/octet-stream表示二进制传输
Response.BinaryWrite((Byte[])reader["User_ImgContent"]);
Response.End();
conn.Close();
reader.Close();
Response.Write("读取成功");
}
byte[] ImageData = (byte[])sqlReader["照片"];
Response.BinaryWrite(ImageData);
写法2
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
public partial class ReadImage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
int ImgID = Convert.ToInt32(Request.QueryString["ImageID"]); //ImgID为图片ID
//建立数据库链接
SqlConnection Con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Tasks.mdf;Integrated Security=True;User Instance=True");
String SqlCmd = "SELECT * FROM ImageStore WHERE ImageID = @ImageID";
SqlCommand CmdObj = new SqlCommand(SqlCmd, Con);
CmdObj.Parameters.Add("@ImageID", SqlDbType.Int).Value = ImgID;
Con.Open();
SqlDataReader SqlReader = CmdObj.ExecuteReader();
SqlReader.Read();
Response.ContentType = (string)SqlReader["ImageContentType"];//设定输出文件类型
//输出图象文件二进制数制
Response.OutputStream.Write((byte[])SqlReader["ImageData"], 0, (int)SqlReader["ImageSize"]);
Response.End();
Con.Close();
}
}
}
需要引用图片的页面 showImage.aspx
添加Image 控件引用要显示的图片的 ImageUrl 地址
如
<repeater ....>
<ItemTemplate>
<asp:Image ID="Image1" runat="server" ImageUrl='<%#"ReadImage.aspx?ImageID="+ DataBinder.Eval(Container.DataItem,"ImageID") %>' width="250px" height="250px" />
</ItemTemplate>
</repeater>
后台代码:
protected void Page_Load(object sender, EventArgs e)
{
SqlConnection Con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Tasks.mdf;Integrated Security=True;User Instance=True");
String SqlCmd = "select * from ImageStore";
SqlCommand CmdObj = new SqlCommand(SqlCmd, Con);
Con.Open();
SqlDataReader reader;
reader = CmdObj.ExecuteReader();
Repeater1.DataSource = reader;
Repeater1.DataBind();
}