|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
优点:简单易学、开发速度快、有很多年“历史”,能找到非常多别人做好的程序来用、配合activeX功能强大,很多php做不到的asp+activeX能做到,例如银行安全控件server
先容
偶然候我们必要保留一些binarydata进数据库。SQLServer供应一个叫做image的特别数据范例供我们保留binarydata。Binarydata能够是图片、文档等。在这篇文章中我们将看到怎样在SQLServer中保留和输入图片。
建表
为了实验这个例子你必要一个含无数据的table(你能够在如今的库中创立它,也能够创立一个新的数据库),上面是它的布局:
ColumnName
Datatype
Purpose
ID
Integer
identitycolumnPrimarykey
IMGTITLE
Varchar(50)
Storessomeuserfriendlytitletoidentitytheimage
IMGTYPE
Varchar(50)
Storesimagecontenttype.ThiswillbesameasrecognizedcontenttypesofASP.NET
IMGDATA
Image
Storesactualimageorbinarydata.
保留images进SQLServer数据库
为了保留图片到table你起首得从客户端上传它们到你的web服务器。你能够创立一个webform,用TextBox失掉图片的题目,用HTMLFileServerControl失掉图片文件。确信你设定了Form的encType属性为multipart/form-data。
Streamimgdatastream=File1.PostedFile.InputStream;
intimgdatalen=File1.PostedFile.ContentLength;
stringimgtype=File1.PostedFile.ContentType;
stringimgtitle=TextBox1.Text;
byte[]imgdata=newbyte[imgdatalen];
intn=imgdatastream.Read(imgdata,0,imgdatalen);
stringconnstr=
((NameValueCollection)Context.GetConfig
("appSettings"))["connstr"];
SqlConnectionconnection=newSqlConnection(connstr);
SqlCommandcommand=newSqlCommand
("INSERTINTOImageStore(imgtitle,imgtype,imgdata)
VALUES(@imgtitle,@imgtype,@imgdata)",connection);
SqlParameterparamTitle=newSqlParameter
("@imgtitle",SqlDbType.VarChar,50);
paramTitle.Value=imgtitle;
command.Parameters.Add(paramTitle);
SqlParameterparamData=newSqlParameter
("@imgdata",SqlDbType.Image);
paramData.Value=imgdata;
command.Parameters.Add(paramData);
SqlParameterparamType=newSqlParameter
("@imgtype",SqlDbType.VarChar,50);
paramType.Value=imgtype;
command.Parameters.Add(paramType);
connection.Open();
intnumRowsAffected=command.ExecuteNonQuery();
connection.Close();
从数据库中输入图片
如今让我们从数据库中掏出我们方才保留的图片,在这儿,我们将间接将图片输入至扫瞄器。你也能够将它保留为一个文件或做任何你想做的。
privatevoidPage_Load(objectsender,System.EventArgse)
{
stringimgid=Request.QueryString["imgid"];
stringconnstr=((NameValueCollection)
Context.GetConfig("appSettings"))["connstr"];
stringsql="SELECTimgdata,imgtypeFROMImageStoreWHEREid="
+imgid;
SqlConnectionconnection=newSqlConnection(connstr);
SqlCommandcommand=newSqlCommand(sql,connection);
connection.Open();
SqlDataReaderdr=command.ExecuteReader();
if(dr.Read())
{
Response.ContentType=dr["imgtype"].ToString();
Response.BinaryWrite((byte[])dr["imgdata"]);
}
connection.Close();
}
在下面的代码中我们利用了一个已翻开的数据库,经由过程datareader选择images。接着用Response.BinaryWrite取代Response.Write来显现image文件。
但愿您喜好这些文章,若有任何定见和倡议请致信webmaster@bipinjoshi.com。
缺点:安全性不是太差了,还行,只要你充分利用系统自带的工具;唯一缺点就是执行效率慢,如何进行网站优化以后,效果会比较好。 |
|