asp.net图片在数据库的存放和读取

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();
            //很简单吧^_^
        }
    }

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值