将图片以二进制存储到数据库中
来源:互联网 发布:gps nema 数据解析 编辑:程序博客网 时间:2024/05/16 07:49
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(); } }