1、创建存放图片的数据库表
create table homeimage
(id int identity(1,1),--编号
timage image)
2、页面
<div>
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="存储图片" />
<asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="生成图片" />
<asp:Button ID="Button3" runat="server" OnClick="Button3_Click" Text="显示图片" /><br />
<asp:Image ID="Image1" runat="server" />
</div>
protected void Button1_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["clglConnStr"].ToString());
string strSql = "insert into homeimage(timage) values(@images)";//保存二进制流的方式需参数的形式
SqlCommand cmd = new SqlCommand(strSql, conn);
conn.Open();
string filepath = Server.MapPath("~/");
filepath += FileUpload1.FileName;
FileUpload1.SaveAs(filepath);
FileStream fs = new FileStream(filepath, FileMode.Open, FileAccess.Read);//读取文件
BinaryReader br = new BinaryReader(fs);
byte[] photo = br.ReadBytes((int)fs.Length);
br.Close();
fs.Close();
cmd.Parameters.Add("@images", SqlDbType.Binary, photo.Length);//设置参数
cmd.Parameters["@images"].Value = photo;//设置值
if (cmd.ExecuteNonQuery() == 1)
{
Response.Write("添加成功!");
}
conn.Close();
}
protected void Button2_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["clglConnStr"].ToString());
conn.Open();
string strSql = "select top 1 timage from homeimage";
SqlCommand cmd = new SqlCommand(strSql, conn);
SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
if (dr.Read())
{
byte[] by = (byte[])dr[0];
Response.AddHeader("Content-Disposition", "attachment; filename=ceshi.jpg");//设置读取的文件头
Response.AddHeader("Content-Length", by.Length.ToString());
Response.ContentType = "text/plain";//设置输出类型 这里可以保存在数据库中 动态实现类型
Response.OutputStream.Write(by, 0, by.Length); //输出
Response.Flush();
}
conn.Close();
}
protected void Button3_Click(object sender, EventArgs e)
{
Image1.ImageUrl = "readImage.aspx?ImgID=1";
}
3、readimage.aspx.cs
public partial class readImage : System.Web.UI.Page
{
ConnectionStringSettings connStr = WebConfigurationManager.ConnectionStrings["clglConnStr"];
public void Page_Load(System.Object sender, System.EventArgs e)
{
int ImgID = Convert.ToInt32(Request.QueryString["ImgID"]); //ImgID为图片ID
//建立数据库链接
SqlConnection Conn = new SqlConnection(ConfigurationManager.ConnectionStrings["clglConnStr"].ToString());
String SqlCmd = "SELECT * FROM homeimage WHERE id = @ImageID";
SqlCommand CmdObj = new SqlCommand(SqlCmd, Conn);
CmdObj.Parameters.Add("@ImageID", SqlDbType.Int).Value = ImgID;
Conn.Open();
SqlDataReader SqlReader = CmdObj.ExecuteReader();
if (SqlReader.Read())
{
byte[] by = (byte[])SqlReader["timage"];
Response.ContentType = "text/plain";
//(string)SqlReader["ImageContentType"];//设定输出文件类型
//输出图象文件二进制数制
Response.OutputStream.Write(by, 0, by.Length);
Response.End();
}
Conn.Close();
//很简单吧^_^
}
}