zoukankan      html  css  js  c++  java
  • 将图片保存到数据库表中及从数据库表中读取图片并显示

    作者:lxc  来源:博客园  发布时间:2009-04-14 11:05  阅读:293 次  原文链接   [收藏]  

    一.页面文件.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 onclick="btnUpFile_Click" />
               
                &nbsp;&nbsp;<asp:Button runat=server ID=btnDisplayPicture Text="DisplayPic"
                onclick="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"/>

     

  • 相关阅读:
    https://leetcode-cn.com/problems/binary-search/solution/er-fen-cha-zhao-by-leetcode/
    Question_add-two-numbers
    leetcode merge-two-sorted-lists
    leetcode 1108
    leetcode 1107
    git
    sql 语句
    cas
    OMP 算法
    OC----预处理器
  • 原文地址:https://www.cnblogs.com/xianyin05/p/1640121.html
Copyright © 2011-2022 走看看