将图片以二进制存储到数据库中

46 篇文章 0 订阅
25 篇文章 0 订阅
1、建所需数据库和表,语句如下:

  --建立数据库
create database test

--使用该数据库
use test

--建立存放图片的表
create table piclist(
 id int Identity primary key,
    pic Image not null
)

2、制作上传图片的模块,代码如下:
前台html代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="UpPhoto.aspx.cs" Inherits="Test_UpPhoto" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
            <input id="UpPhoto" name="UpPhoto" runat="server" type="file" /> 
            <asp:Button id="btnAdd" runat="server" Text="上传" OnClick="btnAdd_Click"></asp:Button>
    </div>
    </form>
</body>
</html>

后台代码:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Data.SqlClient;

public partial class Test_UpPhoto : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void btnAdd_Click(object sender, EventArgs e)
    {
        //获得图象并把图象转换为byte[] 
        HttpPostedFile upPhoto = UpPhoto.PostedFile;
        int upPhotoLength = upPhoto.ContentLength;
        byte[] PhotoArray = new Byte[upPhotoLength];
        Stream PhotoStream = upPhoto.InputStream;
        PhotoStream.Read(PhotoArray, 0, upPhotoLength);

        //连接数据库 
        string ConStr = "server=(local);user id=sa;pwd=sa;database=test";
        SqlConnection conn = new SqlConnection(ConStr);        

        string strSql = "Insert into piclist(pic) values(@pic)";
        SqlCommand cmd = new SqlCommand(strSql, conn);
        cmd.Parameters.Add("@pic", SqlDbType.Image);
        cmd.Parameters["@pic"].Value = PhotoArray; 

        conn.Open();
        cmd.ExecuteNonQuery();
        conn.Close();
        Response.Write("图片上传成功");
    }
}

3、制作显示图片的模块(单独显示图片,即没用到datalist):
后台代码:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.IO;

public partial class Test_ShowPhoto : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
         if(!Page.IsPostBack) 
        {
            //连接数据库 
            string ConnStr = "server=(local);user id=sa;pwd=sa;database=test";
            string strSql = "select * from piclist";
            SqlConnection conn = new SqlConnection(ConnStr);
            conn.Open();

            SqlCommand cmd=new SqlCommand(strSql,conn);
            SqlDataReader reader = cmd.ExecuteReader();
            while (reader.Read())
            {
                Response.ContentType = "application/octet-stream";
                Response.BinaryWrite((Byte[])reader["pic"]);
                Response.Write("successful");
            } 
             reader.Close();
             conn.Close();
             Response.End();
        } 
    }
} 

补充步骤3,用datalist显示图片方法:
建立两个asp.net 页面,名称为piclist.aspx和StreamImg.aspx。
piclist.aspx前台代码为:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="piclist.aspx.cs" Inherits="Test_Test" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>    
<asp:DataList ID="dlContent" runat="server" Width="554px">
            <ItemTemplate>
              <table cellpadding="0" cellspacing="0">
                                <tr>
                                <td style="width: 554px; text-align: left; background-image: url(Image/标头.jpg); height: 26px;">
                                            <img id='img1' src='StreamImg.aspx?id= <%# DataBinder.Eval(Container.DataItem,"id") %>'>
                                            </a>
                                   </a>
                                </td>
                           </tr>
                </table>
            </ItemTemplate>
        </asp:DataList>
    </div>
    </form>
</body>
</html>

piclist.aspx后台代码为:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.IO;

public partial class Test_Test : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            //连接数据库 
            string ConnStr = "server=(local);user id=sa;pwd=sa;database=test";
            SqlConnection sqlcon = new SqlConnection(ConnStr);
            sqlcon.Open();
            string sqlstr = "select id from piclist";
            SqlDataAdapter MyAdapter = new SqlDataAdapter(sqlstr, sqlcon);
            DataSet ds = new DataSet();
            MyAdapter.Fill(ds, "tb_pic");
            this.dlContent.DataSource = ds;
            this.dlContent.DataBind();
            sqlcon.Close();
        }
    }
}

StreamImg.aspx无前台代码,后台代码为:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
using System.IO;

public partial class StreamImg : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //string type = Request.QueryString["pt"];
        int id = Convert.ToInt32(Request.QueryString["id"]);
        ShowPic(id);
    }
        private void ShowPic(int id)
    {
        //连接数据库 
        string ConnStr = "server=(local);user id=sa;pwd=sa;database=test";
        string strSql = "select * from piclist where id='"+ id +"'";
        SqlConnection conn = new SqlConnection(ConnStr);
        conn.Open();

        SqlCommand cmd = new SqlCommand(strSql, conn);
        SqlDataReader reader = cmd.ExecuteReader();
        while (reader.Read())
        {
            Response.ContentType = "application/octet-stream";
            Response.BinaryWrite((Byte[])reader["pic"]);
            Response.Write("successful");
        }
        reader.Close();
        conn.Close();
        Response.End();
    } 
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值