public partial class showimage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
int fileId;
// 如果传过来的参数能转换成数字
//fileId = Convert.ToInt32(Request.QueryString["FileID"]);
//Response.Write(Request.QueryString["FileID"]);
//if (fileId!=null)
if(int.TryParse(Request.QueryString["FileID"],out fileId))
{
string sql = "select Mime,FileData from FileList where FileID=@FileID";
Label1.Text = sql;
// SqlDbHelper是我们自己编写的数据库通用类
SqlDbHelper helper = new SqlDbHelper(ConfigurationManager.ConnectionStrings["Conn"].ConnectionString);
SqlParameter[] parameters = new SqlParameter[1];
parameters[0] = new SqlParameter("@FileID",SqlDbType.Int,4);
parameters[0].Value = fileId;
SqlDataReader reader = helper.ExecuteReader(sql,CommandType.Text,parameters);
byte[] data = null;
string mime = string.Empty;
// 如果存在图片记录,按序号查询最多只有一条记录
// 这里就用If判断而不用while循环
if (reader.Read())
{
// 将数据库中的image字段保存的数据类型转换成byte[]
data=(byte[])(reader["FileData"]);
mime=(string)(reader["Mime"]);
Response.Write(data);
Response.Write(mime);
}
reader.Close(); // 读取之后即使关闭reader对象
if (data != null && data.Length > 0)
{
Response.Clear(); // 清空所有输出
Response.ContentType = mime; // 设置对象MIME为对象的MiME
// 因为不存在直接将byte[]转换成图像的方法
// 所以利用byte[]构建内存流对象
MemoryStream memorysteam = new MemoryStream(data);
Bitmap image = new System.Drawing.Bitmap(memorysteam);// 利用流对象构建Bitmap对象
image.Save(Response.OutputStream,ImageFormat.Jpeg); // 将Bitmap对象保存到Response对象的输出流中
image.Dispose(); // 释放Bitmap对象
Response.End();
}
}
}
}