将图片保存到数据库表中及从数据库表中读取图片并显示

一.页面文件.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="PictureDeal.aspx.cs" Inherits="MyProject.PictureDeal" %>

<!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="File1" runat=server type="file"/>&nbsp;&nbsp;<asp:Button runat=server ID=btnUpFile

            Text=UpFile οnclick="btnUpFile_Click" />

           

            &nbsp;&nbsp;<asp:Button runat=server ID=btnDisplayPicture Text="DisplayPic"

            οnclick="btnDisplayPicture_Click" />

   

    <br />

   

    <img  runat=server id=imgDisplay  runat=server  />

  <asp:Label runat=server ID=lblMsg EnableViewState=false ></asp:Label>

 

  <asp:Repeater runat=server ID=Rept   >

  <HeaderTemplate    >

  <table  cellpadding=0 cellspacing=0  > 

  </HeaderTemplate>

 <ItemTemplate  >

  <tr>

  <td colspan=3 align=left ><%# Eval("ImageID") %></td>

  </tr>

 

  <tr >

  <td  style="border:solid 1px gray;"><%# Eval("ImageType")%></td>

  <td style="border:solid 1px gray;"><%# Eval("ImageLength","{0:N}") %></td>

  <td style="border:solid 1px gray;"><img src="HandlerPicture.ashx?ImageID=<%# Eval("ImageID") %>" height=100 width=200 /></td>

  </tr>

 

 <tr>

 <td colspan=3><%# (Container.ItemIndex+1)%2==0 ? "<hr style='color:blue;' />" : String.Empty %> </td>

  </tr>

 

  </ItemTemplate>

 

<%--  <SeparatorTemplate>

  <tr>

  <td colspan=3 align=left ><hr style=" color:Red;" /></td>

  </tr>

  </SeparatorTemplate>--%>

 

  <FooterTemplate>

  <tr>

  <td colspan =3><hr style="color:Red;"  /></td>

  </tr>

  </table>

  </FooterTemplate>

  </asp:Repeater>

 

    </div>

    </form>

 

</body>

</html>

二.页面代码文件.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.IO;

using System.Data;

using System.Data.SqlClient;

namespace MyProject

{

    public partial class PictureDeal : System.Web.UI.Page

    {

        string strCon = System.Configuration.ConfigurationManager.AppSettings["ConnStr"].ToString();

        protected void Page_Load(object sender, EventArgs e)

        {

        }

        //上传图片并保存到数据库中

        protected void btnUpFile_Click(object sender, EventArgs e)

        {

            string strJs = string.Empty;

            if (File1.PostedFile.ContentLength > 0)

            {

                if (System.IO.Path.GetExtension(File1.PostedFile.FileName) == ".jpg")

                {

                    //string strPath = Server.MapPath(@"~/File");

                    //strPath = System.IO.Path.Combine(strPath , System.IO.Path.GetFileName(File1.PostedFile.FileName));

                    //File1.PostedFile.SaveAs(strPath);

               

                    string strGuid=System.Guid.NewGuid().ToString();

                    try

                    {

                    using (SqlConnection sqlcon = new SqlConnection(strCon))

                    {

                        int intfileLength=File1.PostedFile.ContentLength;

                        string strfileType=File1.PostedFile.ContentType;

                        Stream fileStream = File1.PostedFile.InputStream;

                        byte[] imgBytes=new byte[intfileLength];

                        fileStream.Read(imgBytes,0,intfileLength);

                        SqlCommand sqlCmd = new SqlCommand("insert into tbImageFile(ImageID,ImageType,ImageContent,ImageLength) values (@ImageID,@ImageType,@ImageContent,@ImageLength)", sqlcon);

                        SqlParameter p1 = new SqlParameter("@ImageID", strGuid);

                        SqlParameter p2 = new SqlParameter("@ImageType", strfileType);

                        SqlParameter p3 = new SqlParameter("@ImageContent", imgBytes);

                        SqlParameter p4 = new SqlParameter("@ImageLength", intfileLength);

                        sqlCmd.Parameters.Add(p1);

                        sqlCmd.Parameters.Add(p2);

                        sqlCmd.Parameters.Add(p3);

                        sqlCmd.Parameters.Add(p4);

                        sqlcon.Open();

                        if (sqlCmd.ExecuteNonQuery() > 0)

                        {

                            imgDisplay.Src = "HandlerPicture.ashx?ImageID=" + strGuid;

                            lblMsg.Text = "<script language=javascript>alert('添加成功');</script>";

                        }

                        else

                        {

                            lblMsg.Text = "<script language=javascript>alert('添加失败');</script>";

                        }

                        fileStream.Dispose();

                    }

           

                    }

                    catch(Exception ex)

                    {

                      throw ex;

                    }

                }

                else

                {

                    strJs = "<script language=javascript>alert('上传文件格式不正确');</script>";

                    lblMsg.Text = strJs;

                }

            }

            else

            {

                strJs = "<script language=javascript>alert('请上传文件');</script>";

                lblMsg.Text = strJs;

            }

        }

        //显示图片信息

        protected void btnDisplayPicture_Click(object sender, EventArgs e)

        {

            using (SqlConnection sqlCon = new SqlConnection(strCon))

            {

                SqlCommand sqlCmd = new SqlCommand("select ImageID,ImageContent,ImageLength,ImageType from tbImageFile", sqlCon);

                sqlCon.Open();

                SqlDataAdapter sqlDA = new SqlDataAdapter(sqlCmd);

                DataSet myDs = new DataSet();

               sqlDA.Fill(myDs);

               if (myDs.Tables[0].Rows.Count > 0)

               {

                   Rept.DataSource = myDs.Tables[0].DefaultView;

                   Rept.DataBind();

              

               }           

           

            }

        }

     

    }

}

三.HandlerPicture.ashx 从数据库中读取图片并将二进制字符串写入http输出流.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.IO;

using System.Data;

using System.Data.SqlClient;

namespace MyProject

{

    /// <summary>

    /// 从数据库中获取图片内容.

    /// </summary>

    public class HandlerPicture : IHttpHandler

    {

        string strCon = System.Configuration.ConfigurationManager.AppSettings["ConnStr"];

        public void ProcessRequest(HttpContext context)

        {

            context.Response.ContentType = "image/jpg";

            string strGuid = context.Request.QueryString["ImageID"].ToString();

            using(SqlConnection sqlCon=new SqlConnection(strCon))

            {

                SqlCommand sqlCmd = new SqlCommand("select ImageContent from tbImageFile where ImageID=@ImageID", sqlCon);

                SqlParameter p1 = new SqlParameter("@ImageID", strGuid);

                sqlCmd.Parameters.Add(p1);

                sqlCon.Open();

               byte[] bytes=(byte[])sqlCmd.ExecuteScalar();

               context.Response.BinaryWrite(bytes);

            }  

        }

        public bool IsReusable

        {

            get

            {

                return true;

            }

        }

    }

}

注:在web.config 文件的 <httpHandlers>节中加入如下行,用于指定该文件HandlerPicture.ashx由MyProject.HandlerPicture来处理.

 <add verb="*" path="HandlerPicture.ashx" type="MyProject.HandlerPicture"/>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值