zl程序教程

您现在的位置是:首页 >  后端

当前栏目

ASP.NET下上传图片到数据库,并且读出图片的代码(详细版)

Net数据库ASP上传代码 详细 图片 并且
2023-06-13 09:14:23 时间
首先在SQLServer中建立一个图片存储的数库表,ImageDataColumn为图象二进制数据储存字段,ImageContentTypeColumn为图象文件类型记录字段,ImageDescriptionColumn为储蓄图
象文件说明字段,ImageSizeColumn为储存图象文件长度字段,结构如下:
复制代码代码如下:

CREATETABLE[dbo].[ImageStore](
[ImageID][int]IDENTITY(1,1)NOTNULL,
[ImageData][image]NULL,
[ImageContentType][varchar](50)COLLATEChinese_PRC_CI_ASNULL,
[ImageDescription][varchar](200)COLLATEChinese_PRC_CI_ASNULL,
[ImageSize][int]NULL
)ON[PRIMARY]TEXTIMAGE_ON[PRIMARY]

UpLoadImage.aspx程序内容如下:
复制代码代码如下:

<%@PageInherits="UploadImage.UploadImage"SRC="UpLoadImage.cs"Language="C#"%>
<HTML><title>上传图片</title>
<BODYbgcolor="#FFFFFF">
<FORMENCTYPE="multipart/form-data"RUNAT="server"ID="Form1">
<TABLERUNAT="server"WIDTH="700"ALIGN="left"ID="Table1"cellpadding="0"cellspacing="0"border="0">
<TR>
<TD>上传图片(选择你要上传的图片)</TD>
<TD>
<INPUTTYPE="file"ID="UP_FILE"RUNAT="server"STYLE="Width:320"ACCEPT="text/*"NAME="UP_FILE">
</TD>
</TR>
<TR>
<TD>
文件说明(添加上传图片说明,如:作者、出处)
</TD>
<TD>
<asp:TextBoxRUNAT="server"WIDTH="239"ID="txtDescription"MAINTAINSTATE="false"/>
</TD>
</TR>
<TR>
<TD>
<asp:LabelRUNAT="server"ID="txtMessage"FORECOLOR="red"MAINTAINSTATE="false"/>
</TD>
<TD>
<asp:ButtonRUNAT="server"WIDTH="239"onCLICK="Button_Submit"TEXT="UploadImage"/>
</TD>
</TR>
</TABLE>
</FORM>
</BODY>
</HTML>

UpLoadImage.cs程序内容如下:
复制代码代码如下:
usingSystem;
usingSystem.Web;
usingSystem.IO;
usingSystem.Data;
usingSystem.Data.SqlClient;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.HtmlControls;
namespaceUploadImage
{
publicclassUploadImage:Page{
protectedHtmlInputFileUP_FILE;//HtmlControl、WebControls控件对象
protectedTextBoxtxtDescription;
protectedLabeltxtMessage;
protectedInt32FileLength=0;//记录文件长度变量
protectedvoidButton_Submit(System.Objectsender,System.EventArgse){
HttpPostedFileUpFile=UP_FILE.PostedFile;//HttpPostedFile对象,用于读取图象文件属性
FileLength=UpFile.ContentLength;//记录文件长度
try{
if(FileLength==0){//文件长度为零时
txtMessage.Text="<b>请你选择你要上传的文件</b>";
}else{
Byte[]FileByteArray=newByte[FileLength];//图象文件临时储存Byte数组
StreamStreamObject=UpFile.InputStream;//建立数据流对像
//读取图象文件数据,FileByteArray为数据储存体,0为数据指针位置、FileLnegth为数据长度
StreamObject.Read(FileByteArray,0,FileLength);
//建立SQLServer链接
SqlConnectionCon=newSqlConnection("DataSource=Localhost;Initial
Catalog=testdb;UserID=sa;Pwd=;");
StringSqlCmd="INSERTINTOImageStore(ImageData,ImageContentType,
ImageDescription,ImageSize)valueS(@Image,@ContentType,
@ImageDescription,@ImageSize)";
SqlCommandCmdObj=newSqlCommand(SqlCmd,Con);
CmdObj.Parameters.Add("@Image",SqlDbType.Binary,FileLength).value=
FileByteArray;
CmdObj.Parameters.Add("@ContentType",SqlDbType.VarChar,50).value=
UpFile.ContentType;//记录文件类型
//把其它单表数据记录上传
CmdObj.Parameters.Add("@ImageDescription",SqlDbType.VarChar,200).value=
txtDescription.Text;
//记录文件长度,读取时使用
CmdObj.Parameters.Add("@ImageSize",SqlDbType.BigInt,8).value=
UpFile.ContentLength;
Con.Open();
CmdObj.ExecuteNonQuery();
Con.Close();
txtMessage.Text="<p><b>OK!你已经成功上传你的图片</b>";//提示上传成功
}
}catch(Exceptionex){
txtMessage.Text=ex.Message.ToString();
}}}}

//----------------------------------------------------------------------
//好了,图片已经上传到数据库,现在还要干什么呢?当然是在数据库中读取及显示在Web页中啦,
请看以下程序:
ReadImage.aspx程序内容如下:
复制代码代码如下:
/-----------------------------------------------------------------------
<%@PageInherits="ReadImage.MainDisplay"SRC="ReadImage.cs"%>
//----------------------------------------------------------------------
//ReadImage.cs程序内容如下:
usingSystem;
usingSystem.Data;
usingSystem.Data.SqlClient;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.HtmlControls;
namespaceReadImage{
publicclassMainDisplay:System.Web.UI.Page{
publicvoidPage_Load(System.Objectsender,System.EventArgse){
intImgID=Convert.ToInt32(Request.QueryString["ImgID"]);//ImgID为图片
ID
//建立数据库链接
SqlConnectionCon=newSqlConnection("DataSource=KING;Initial
Catalog=testdb;UserID=sa;Pwd=;");
StringSqlCmd="SELECT*FROMImageStoreWHEREImageID=@ImageID";
SqlCommandCmdObj=newSqlCommand(SqlCmd,Con);
CmdObj.Parameters.Add("@ImageID",SqlDbType.Int).value=ImgID;
Con.Open();
SqlDataReaderSqlReader=CmdObj.ExecuteReader();
SqlReader.Read();
Response.ContentType=(string)SqlReader["ImageContentType"];//设定输出文件类型
//输出图象文件二进制数制
Response.OutputStream.Write((byte[])SqlReader["ImageData"],0,
(int)SqlReader["ImageSize"]);
Response.End();
Con.Close();
//很简单吧^_^
}
}
}

最后,我们当然要把它在Web页面显示出来啦
ShowImage.hml
复制代码代码如下:
<html>
<body>
这个是从数据库读取出来的图象:<imgsrc="ReadImage.aspx?ImgID=1">
<body>
</html>