ASP.NET下上传图片到数据库,并且读出图片的代码(详细版)
2023-06-13 09:14:23 时间
首先在SQLServer中建立一个图片存储的数库表,ImageDataColumn为图象二进制数据储存字段,ImageContentTypeColumn为图象文件类型记录字段,ImageDescriptionColumn为储蓄图
象文件说明字段,ImageSizeColumn为储存图象文件长度字段,结构如下:
复制代码代码如下:
象文件说明字段,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>
相关文章
- 宝塔面板Linux系统通过Docker部署VB.NET Asp.Net Core WebAPI应用
- 利用Oracle.Net实现数据库互联(oracle.net)
- .net安装 Linux 上的 ASP.NET 环境(linux安装asp)
- Net缓存技术Redis:管理数据量大的梦想(net缓存技术redis)
- 使用.NET技术操作MySQL数据库:简单易学,高效稳定(.net操作mysql)
- asp.net的web服务MSSQL检测ASP.NET的Web服务——利用它构建更棒的站点(mssql检测基于)
- ASP动态连接MySQL数据库(asp 连mysql)
- ASP操作MySQL数据库实现简单便捷功能(asp用mysql数据库)
- Net结合MySQL实现强劲的数据库运算(.net 用mysql)
- 使用NET来连接MySQL数据库的简单方法(.net怎么连mysql)
- 网上解决Net环境下MySQL数据库的同步问题(.net 同步mysql)
- NET和MySQL的无缝搭配实现创新的技术路径(.net mysql支持)
- 分类NET 5与MySQL分类新加坡开发者技术展望(.net 5 mysql)
- asp.net使用Silverlight操作ASPNETDB数据库
- Asp.Net网站优化系列之数据库优化分字诀分表(纵向拆分,横向分区)
- Asp.Net网站优化系列之数据库优化措施使用主从库(全)
- asp.net通用的连接数据库实例代码
- asp.net连接数据库读取数据示例分享
- asp.net发送邮件实现方法
- asp.net实现access数据库分页的方法