欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-03-08 11:46:58
首先在sql server中建立一个图片存储的数库表,imagedata column为图象二进制数据储存字段,imagecontenttype column为图象文件类型...
首先在sql server中建立一个图片存储的数库表,imagedata column为图象二进制数据储存字段,imagecontenttype column为图象文件类型记录字段,imagedescription column为储蓄图
象文件说明字段,imagesize column为储存图象文件长度字段,结构如下:
复制代码 代码如下:

create table [dbo].[imagestore] (
[imageid] [int] identity (1, 1) not null ,
[imagedata] [image] null ,
[imagecontenttype] [varchar] (50) collate chinese_prc_ci_as null ,
[imagedescription] [varchar] (200) collate chinese_prc_ci_as null ,
[imagesize] [int] null
) on [primary] textimage_on [primary]

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

<%@ page inherits="uploadimage.uploadimage" src="uploadimage.cs" language="c#"%>
<html><title>上传图片</title>
<body bgcolor="#ffffff">
<form enctype="multipart/form-data" runat="server" id="form1">
<table runat="server" width="700" align="left" id="table1" cellpadding="0" cellspacing="0" border="0">
<tr>
<td>上传图片(选择你要上传的图片)</td>
<td>
<input type="file" id="up_file" runat="server" style="width:320" accept="text/*" name="up_file">
</td>
</tr>
<tr>
<td>
文件说明(添加上传图片说明,如:作者、出处)
</td>
<td>
<asp:textbox runat="server" width="239" id="txtdescription" maintainstate="false" />
</td>
</tr>
<tr>
<td>
<asp:label runat="server" id="txtmessage" forecolor="red" maintainstate="false" />
</td>
<td>
<asp:button runat="server" width="239" onclick="button_submit" text="upload image" />
</td>
</tr>
</table>
</form>
</body>
</html>

uploadimage.cs程序内容如下:
复制代码 代码如下:

using system;
using system.web;
using system.io;
using system.data;
using system.data.sqlclient;
using system.web.ui;
using system.web.ui.webcontrols;
using system.web.ui.htmlcontrols;
namespace uploadimage
{
public class uploadimage : page {
protected htmlinputfile up_file; //htmlcontrol、webcontrols控件对象
protected textbox txtdescription;
protected label txtmessage;
protected int32 filelength = 0; //记录文件长度变量
protected void button_submit(system.object sender, system.eventargs e) {
httppostedfile upfile = up_file.postedfile; //httppostedfile对象,用于读取图象文件属性
filelength = upfile.contentlength; //记录文件长度
try {
if (filelength == 0) { //文件长度为零时
txtmessage.text = "<b>请你选择你要上传的文件</b>";
} else {
byte[] filebytearray = new byte[filelength]; //图象文件临时储存byte数组
stream streamobject = upfile.inputstream; //建立数据流对像
//读取图象文件数据,filebytearray为数据储存体,0为数据指针位置、filelnegth为数据长度
streamobject.read(filebytearray,0,filelength);
//建立sql server链接
sqlconnection con = new sqlconnection("data source=localhost;initial
catalog=testdb;user id=sa;pwd=;");
string sqlcmd = "insert into imagestore (imagedata, imagecontenttype,
imagedescription, imagesize) values (@image, @contenttype,
@imagedescription, @imagesize)";
sqlcommand cmdobj = new sqlcommand(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 (exception ex) {
txtmessage.text = ex.message.tostring();
}}}}

//----------------------------------------------------------------------
//好了,图片已经上传到数据库,现在还要干什么呢?当然是在数据库中读取及显示在web页中啦,
请看以下程序:
readimage.aspx程序内容如下:
复制代码 代码如下:

/-----------------------------------------------------------------------
<%@ page inherits="readimage.maindisplay" src="readimage.cs"%>
//----------------------------------------------------------------------
//readimage.cs程序内容如下:
using system;
using system.data;
using system.data.sqlclient;
using system.web.ui;
using system.web.ui.webcontrols;
using system.web.ui.htmlcontrols;
namespace readimage {
public class maindisplay : system.web.ui.page {
public void page_load(system.object sender, system.eventargs e) {
int imgid = convert.toint32(request.querystring["imgid"]); //imgid为图片
id
//建立数据库链接
sqlconnection con = new sqlconnection("data source=king;initial
catalog=testdb;user id=sa;pwd=;");
string sqlcmd = "select * from imagestore where imageid = @imageid";
sqlcommand cmdobj = new sqlcommand(sqlcmd, con);
cmdobj.parameters.add("@imageid", sqldbtype.int).value = imgid;
con.open();
sqldatareader sqlreader = 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>
这个是从数据库读取出来的图象:<img src="readimage.aspx?imgid=1">
<body>
</html>

上一篇: Java int与integer的对比区别

下一篇: