zoukankan      html  css  js  c++  java
  • SQL Server 数据库 存图片、取图片 demo

    数据库结构:

    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=" 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();
                }
            }

        }
    }

    作者:达奇
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    Android最流行的网络框架
    linux知识库
    linux tail命令使用
    Android系列之Fragment(二)Fragment的生命周期和返回栈
    viewpager中fragment的生命周期管理
    fragment和fragmentactivity解析
    Android之Activity,Fragment生命周期探知
    Fragment生命周期
    基础总结篇之四:Service完全解析
    Activity的task相关
  • 原文地址:https://www.cnblogs.com/dachie/p/1829394.html
Copyright © 2011-2022 走看看