ASP.NET把图片存入数据库和使用文件流读取显示(4)
如果你在开发WinForm应用的话你可以直接把返回结果保存或者显示到PictureBox里,如果你在使用ASP.Net那么你可以在单独的一个页面把图片输出,在另外一个页面把Image控件的ImageUrl属性指向图片输出页面。
比如输出页面getImg.aspx的代码
Code
protected void Page_Load(object sender, EventArgs e)
{
string sql = "select IMGDATA from t_img where imgID=100";
string strconn = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionStringForOracle"].ToString();
OracleConnection oraConn = new OracleConnection(strconn);
OracleCommand oraComm = new OracleCommand(sql, oraConn);
oraConn.Open();
byte[] fileData = (byte[])oraComm.ExecuteScalar();
oraConn.Close();
System.IO.MemoryStream ms = new System.IO.MemoryStream(fileData);
System.Drawing.Image img = System.Drawing.Image.FromStream(ms);
img.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
}
如果是多张图片
Code
SqlDataReader sdr2 = c.drPicture(pid);
if (sdr2.Read())
{
MemoryStream ms1 = new MemoryStream((byte[])sdr2["pica"]);
if (ms1.Length > 0)
{
pica.SizeMode = PictureBoxSizeMode.StretchImage; //保持图片不走样
pica.Image = Image.FromStream(ms1, true);
}
MemoryStream ms2 = new MemoryStream((byte[])sdr2["picb"]);
if (ms2.Length > 0)
{
picb.SizeMode = PictureBoxSizeMode.StretchImage;
picb.Image = Image.FromStream(ms2, true);
}
MemoryStream ms3 = new MemoryStream((byte[])sdr2["picc"]);
if (ms3.Length > 0)
{
picc.SizeMode = PictureBoxSizeMode.StretchImage;
picc.Image = Image.FromStream(ms3, true);
}
MemoryStream ms4 = new MemoryStream((byte[])sdr2["picd"]);
if (ms4.Length > 0)
{
picd.SizeMode = PictureBoxSizeMode.StretchImage;
picd.Image = Image.FromStream(ms4, true);
}
sdr2.Close();
}
public SqlDataReader drPicture(string pid)
{
db.Begin();
string str2 = "select * from T_picture where pid = '" + pid + "'";
SqlCommand sc2 = new SqlCommand(str2, db.conn);
SqlDataReader sdr2 = sc2.ExecuteReader();
return sdr2;
}