在ASP.NET中存取图片到数据库的示例

本文介绍如何在ASP.NET环境中实现图片的上传功能,并将图片存储到SQL Server数据库中。此外,还展示了如何从数据库中读取图片并在网页上显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ContractedBlock.gifExpandedBlockStart.gifCode
  1//开发环境:Window   2000、SQLServer2000、.Net   Framework   SDK正式版    
  2       //开发语言:C#、ASP.Net    
  3       //简介:数据库中图片存蓄及读取    
  4ExpandedBlockStart.gifContractedBlock.gif       /**//*    
  5       说明:在ASP中,我们用Request.TotalBytes、Request.BinaryRead()来上传图片,这个可恶的 BinaryRead()方法非常笨,单个文件上传倒没什么大事,单如果多个图片上专可就花大气力了…!而现在ASP.Net中将会把解决以前ASP中文件上传的种种问题,使你在ASP.Net中轻轻松松开发出功能强大的上传程序,下面大家看看例子啦。    
  6       */
      
  7ExpandedBlockStart.gifContractedBlock.gif       /**//*    
  8       首先在SQL   Server中建立一个图片存储的数库表,ImageData   Column为图象二进制数据储存字段,ImageContentType   Column为图象文件类型记录字段,ImageDescription   Column为储蓄图象文件说明字段,ImageSize   Column为储存图象文件长度字段,结构如下:    
  9       CREATE   TABLE   [dbo].[ImageStore]   (    
 10       [ImageID]   [int]   IDENTITY   (1,   1)   NOT   NULL   ,    
 11       [ImageData]   [image]   NULL   ,    
 12       [ImageContentType]   [varchar]   (50)   COLLATE   Chinese_PRC_CI_AS   NULL   ,    
 13       [ImageDescription]   [varchar]   (200)   COLLATE   Chinese_PRC_CI_AS   NULL   ,    
 14       [ImageSize]   [int]   NULL    
 15       )   ON   [PRIMARY]   TEXTIMAGE_ON   [PRIMARY]    
 16       */
    
 17        
 18       //UpLoadImage.aspx程序内容如下:    
 19       <%@   Page   Inherits="UploadImage.UploadImage"   SRC="UpLoadImage.cs"   Language="C#"%>    
 20       <HTML><title>上传图片</title>    
 21       <BODY   bgcolor="#FFFFFF">    
 22       <FORM   ENCTYPE="multipart/form-data"   RUNAT="server"   ID="Form1">    
 23       <TABLE   RUNAT="server"   WIDTH="700"   ALIGN="left"   ID="Table1"   cellpadding="0"   cellspacing="0"   border="0">    
 24       <TR>    
 25       <TD>上传图片(选择你要上传的图片)</TD>    
 26       <TD>    
 27       <INPUT   TYPE="file"   ID="UP_FILE"   RUNAT="server"   STYLE="Width:320"   ACCEPT="text/*"   NAME="UP_FILE">    
 28       </TD>    
 29       </TR>    
 30       <TR>    
 31       <TD>    
 32       文件说明(添加上传图片说明,如:作者、出处)    
 33       </TD>    
 34       <TD>    
 35       <asp:TextBox   RUNAT="server"   WIDTH="239"   ID="txtDescription"   MAINTAINSTATE="false"   />    
 36       </TD>    
 37       </TR>    
 38       <TR>    
 39       <TD>    
 40       <asp:Label   RUNAT="server"   ID="txtMessage"   FORECOLOR="red"   MAINTAINSTATE="false"   />    
 41       </TD>    
 42       <TD>    
 43       <asp:Button   RUNAT="server"   WIDTH="239"   ONCLICK="Button_Submit"   TEXT="Upload   Image"   />    
 44       </TD>    
 45       </TR>    
 46       </TABLE>    
 47       </FORM>    
 48       </BODY>    
 49       </HTML>    
 50       //-------------------------------------------------------------------    
 51       //UpLoadImage.cs程序内容如下:    
 52       using   System;    
 53       using   System.Web;    
 54       using   System.IO;    
 55       using   System.Data;    
 56       using   System.Data.SqlClient;    
 57       using   System.Web.UI;    
 58       using   System.Web.UI.WebControls;    
 59       using   System.Web.UI.HtmlControls;    
 60       namespace   UploadImage    
 61ExpandedBlockStart.gifContractedBlock.gif       {    
 62ExpandedSubBlockStart.gifContractedSubBlock.gif       public   class   UploadImage   :   Page   {    
 63       protected   HtmlInputFile   UP_FILE;   //HtmlControl、WebControls控件对象    
 64       protected   TextBox   txtDescription;    
 65       protected   Label   txtMessage;    
 66       protected   Int32   FileLength   =   0;   //记录文件长度变量    
 67ExpandedSubBlockStart.gifContractedSubBlock.gif       protected   void   Button_Submit(System.Object   sender,   System.EventArgs   e)   {    
 68       HttpPostedFile   UpFile   =   UP_FILE.PostedFile;   //HttpPostedFile对象,用于读取图象文件属性    
 69       FileLength   =   UpFile.ContentLength;   //记录文件长度    
 70ExpandedSubBlockStart.gifContractedSubBlock.gif       try   {    
 71ExpandedSubBlockStart.gifContractedSubBlock.gif       if   (FileLength   ==   0)   {   //文件长度为零时    
 72       txtMessage.Text   =   "<b>请你选择你要上传的文件</b>";    
 73ExpandedSubBlockStart.gifContractedSubBlock.gif       }
   else   {    
 74       Byte[]   FileByteArray   =   new   Byte[FileLength];   //图象文件临时储存Byte数组    
 75       Stream   StreamObject   =   UpFile.InputStream;   //建立数据流对像    
 76       //读取图象文件数据,FileByteArray为数据储存体,0为数据指针位置、FileLnegth为数据长度    
 77       StreamObject.Read(FileByteArray,0,FileLength);    
 78       //建立SQL   Server链接    
 79       SqlConnection   Con   =   new   SqlConnection("Data   Source=Localhost;Initial   Catalog=testdb;User   ID=sa;Pwd=;");    
 80       String   SqlCmd   =   "INSERT   INTO   ImageStore   (ImageData,   ImageContentType,   ImageDescription,   ImageSize)   VALUES   (@Image,   @ContentType,   @ImageDescription,   @ImageSize)";    
 81       SqlCommand   CmdObj   =   new   SqlCommand(SqlCmd,   Con);    
 82       CmdObj.Parameters.Add("@Image",SqlDbType.Binary,   FileLength).Value   =   FileByteArray;    
 83       CmdObj.Parameters.Add("@ContentType",   SqlDbType.VarChar,50).Value   =   UpFile.ContentType;   //记录文件类型    
 84       //把其它单表数据记录上传    
 85       CmdObj.Parameters.Add("@ImageDescription",   SqlDbType.VarChar,200).Value   =   txtDescription.Text;    
 86       //记录文件长度,读取时使用    
 87       CmdObj.Parameters.Add("@ImageSize",   SqlDbType.BigInt,8).Value   =   UpFile.ContentLength;    
 88       Con.Open();    
 89       CmdObj.ExecuteNonQuery();    
 90       Con.Close();    
 91       txtMessage.Text   =   "<p><b>OK!你已经成功上传你的图片</b>";//提示上传成功    
 92       }
    
 93ExpandedSubBlockStart.gifContractedSubBlock.gif       }
   catch   (Exception   ex)   {    
 94       txtMessage.Text   =   ex.Message.ToString();    
 95       }
}
}
}
    
 96       //----------------------------------------------------------------------    
 97       //好了,图片已经上传到数据库,现在还要干什么呢?当然是在数据库中读取及显示在Web页中啦,请看以下程序:    
 98       //ReadImage.aspx程序内容如下:    
 99       /-----------------------------------------------------------------------    
100       <%@   Page   Inherits="ReadImage.MainDisplay"   SRC="ReadImage.cs"%>    
101       //----------------------------------------------------------------------    
102       //ReadImage.cs程序内容如下:    
103       using   System;    
104       using   System.Data;    
105       using   System.Data.SqlClient;    
106       using   System.Web.UI;    
107       using   System.Web.UI.WebControls;    
108       using   System.Web.UI.HtmlControls;    
109ExpandedBlockStart.gifContractedBlock.gif       namespace   ReadImage   {    
110ExpandedSubBlockStart.gifContractedSubBlock.gif       public   class   MainDisplay   :   System.Web.UI.Page   {    
111ExpandedSubBlockStart.gifContractedSubBlock.gif       public   void   Page_Load(System.Object   sender,   System.EventArgs   e)   {    
112       int   ImgID   =   Convert.ToInt32(Request.QueryString["ImgID"]);   //ImgID为图片ID    
113       //建立数据库链接    
114       SqlConnection   Con   =   new   SqlConnection("Data   Source=KING;Initial   Catalog=testdb;User   ID=sa;Pwd=;");    
115       String   SqlCmd   =   "SELECT   *   FROM   ImageStore   WHERE   ImageID   =   @ImageID";    
116       SqlCommand   CmdObj   =   new   SqlCommand(SqlCmd,   Con);    
117       CmdObj.Parameters.Add("@ImageID",   SqlDbType.Int).Value   =   ImgID;    
118       Con.Open();    
119       SqlDataReader   SqlReader   =   CmdObj.ExecuteReader();    
120       SqlReader.Read();    
121       Response.ContentType   =   (string)SqlReader["ImageContentType"];//设定输出文件类型    
122       //输出图象文件二进制数制    
123       Response.OutputStream.Write((byte[])SqlReader["ImageData"],   0,   (int)SqlReader["ImageSize"]);    
124       Response.End();    
125       Con.Close();    
126       //很简单吧^_^    
127       }
    
128       }
    
129       }
    
130       //--------------------------------------------------------------------    
131       //最后,我们当然要把它在Web页面显示出来啦    
132       //ShowImage.hml    
133       <html>    
134       <body>    
135       这个是从数据库读取出来的图象:<img   src="ReadImage.aspx?ImgID=1">    
136       <body>    
137       </html>    
138       //------------------------------------------------------------------    
139       //最后,这程序当然还很多改进之处,希望大家多想想多编编一定可以写出更多的图象上传程序    
140       //Good   Luck,engine    
141       --------------------------------------------------------------------    
142       Powered   by   DvNews.net   

转载于:https://www.cnblogs.com/KivenSun/articles/1434382.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值