首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

SQL Server 数据库 存图片、取图片 demo

Posted on 2010-09-17 15:52  达奇  阅读(487)  评论(0编辑  收藏  举报

数据库结构:

id int

img image

type varchar50

leng varchar50

 

 

录入和管理:

 

aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!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:FileUpload ID="UpFile" runat="server" />
        &nbsp;<asp:Button ID="Button1" runat="server" Text="upload" OnClick="Button1_Click" />
        <table style="width: 500px">
            <asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1">
                <HeaderTemplate>
                    <tr>
                        <td>
                            编号
                        </td>
                        <td>
                            预览
                        </td>
                        <td>
                            类型
                        </td>
                        <td>
                            字节
                        </td>
                    </tr>
                </HeaderTemplate>
                <ItemTemplate>
                    <tr>
                        <td>
                            <%#Eval("id")%>
                        </td>
                        <td>
                            <a href='Show.aspx?imgId=<%#Eval("id") %>'>
                                <img src="Show.aspx?imgId=<%#Eval("id") %>" height="50px" border="0" /></a>
                        </td>
                        <td>
                            <%#Eval("type") %>
                        </td>
                        <td>
                            <%#Eval("leng") %>
                        </td>
                    </tr>
                </ItemTemplate>
            </asp:Repeater>
            <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="server=.;database=imgTest;uid=sa;pwd=sa"
                SelectCommand="SELECT [id], [img], [type], [leng] FROM [imgTable]"></asp:SqlDataSource>
        </table>
    </div>
    </form>
</body>
</html>

 

 

aspx.cs

 

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Data.SqlClient;
using System.Data;

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

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        if (UpFile.HasFile)
        {
            int FileLength = UpFile.PostedFile.ContentLength;
            Byte[] FileByteArray = new Byte[FileLength];   //图象文件临时储存Byte数组
            Stream StreamObject = UpFile.PostedFile.InputStream;      //建立数据流对像
            //读取图象文件数据,FileByteArray为数据储存体,0为数据指针位置、FileLnegth为数据长度
            StreamObject.Read(FileByteArray, 0, FileLength);
            //建立SQL Server链接
            using (SqlConnection Con = new SqlConnection("server=.;database=imgTest;uid=sa;pwd=sa"))
            {
                String SqlCmd = "INSERT INTO imgTable (img,type,leng) values (@img,@type,@leng)";
                SqlCommand CmdObj = new SqlCommand(SqlCmd, Con);
                CmdObj.Parameters.Add("@img", SqlDbType.Image, FileLength).Value = FileByteArray;
                CmdObj.Parameters.Add("@type", SqlDbType.VarChar, 50).Value = UpFile.PostedFile.ContentType;
                CmdObj.Parameters.Add("@leng", SqlDbType.Int).Value = FileLength;
                Con.Open();
                CmdObj.ExecuteNonQuery();
                Con.Close();
            }
            Response.Write("<script>alert('ok!');</script>");
        }
    }
}

 

 

 

读取:

 

aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Show.aspx.cs" Inherits="Show" %>

<!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>
    </div>
    </form>
</body>
</html>

 

 

aspx.cs

 

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;

public partial class Show : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!string.IsNullOrEmpty(Request.QueryString["imgId"]))
        {
            string imgId = Request.QueryString["imgId"];
            using (SqlConnection Con = new SqlConnection("server=.;database=imgTest;uid=sa;pwd=sa"))
            {
                Con.Open();
                SqlCommand CmdObj = new SqlCommand("select * from imgTable where id=" + imgId, Con);
                SqlDataReader SqlReader = CmdObj.ExecuteReader();
                SqlReader.Read();
                Response.ContentType = (string)SqlReader["type"];//设定输出文件类型
                //输出图象文件二进制数制
                Response.OutputStream.Write((byte[])SqlReader["img"], 0, (int)SqlReader["leng"]);
                Response.End();
            }
        }

    }
}