|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
asp,你就只能等着微软给你解决,它不乐意你就只好悲催。而且asp跑在windows服务器上,windows服务器跟linux比起来简直弱爆了!asp.net|server|数据|数据库先容
在良多情形下,我们必要把图片保留到数据库中。在某些使用程序中,存在一些敏感信息不克不及被存储到文件体系中,由于存储在文件体系上的任何图片都很简单被用户不法取得。
本文将会商在ASP.NET中如何把图片保留到SQLSERVER数据库中。
在本文中我们将懂得到以下几方面的内容:
l????????上载图片文件的请求
l????????利用Strem工具
l????????取得上载图片巨细和范例
l????????怎样利用InputStream办法?
上载图片文件的请求
在入手下手上载前我们必要作两件主要的事变
#Form标志的enctype属性必要被设置为以下情势:
enctype="multipart/form-data"
#供应一个让用户选择图片文件的Html控件:
#还要援用System.IO定名空间来处置Strem工具
上述的三项都要使用到aspx页中。在SQLSERVER中另有以下的一些请求:
#一个最少有一个字段范例为Image的表
#别的有一个用来存储图片范例的Varchar范例的字段就更好了
那末,我们有了一个有Image字段范例的数据表和一个(HTML文件控件)。我们还必要一个提交按钮,当用户选择好图片后能够点击它。在按钮的OnClick事务中我们要取得图片文件的内容并终极把它拔出到数据表中。让我们来看看按钮的OnClick事务,它读取图片并把图片拔出到数据表中。
提交按钮的OnClick事务代码
?
??DimintImageSizeAsInt64
????DimstrImageTypeAsString
????DimImageStreamAsStream
????GetstheSizeoftheImage
????intImageSize=PersonImage.PostedFile.ContentLength
????GetstheImageType
????strImageType=PersonImage.PostedFile.ContentType
????ReadstheImage
????ImageStream=PersonImage.PostedFile.InputStream
????DimImageContent(intImageSize)AsByte
????DimintStatusAsInteger
????intStatus=ImageStream.Read(ImageContent,0,intImageSize)
????CreateInstanceofConnectionandCommandObject
????DimmyConnectionAsNewSqlConnection(ConfigurationSettings.AppSettings("ConnectionString"))
????DimmyCommandAsNewSqlCommand("sp_person_isp",myConnection)
????MarktheCommandasaSPROC
????myCommand.CommandType=CommandType.StoredProcedure
????AddParameterstoSPROC
????DimprmPersonImageAsNewSqlParameter("@PersonImage",SqlDbType.Image)
????prmPersonImage.Value=ImageContent
????myCommand.Parameters.Add(prmPersonImage)
????DimprmPersonImageTypeAsNewSqlParameter("@PersonImageType",SqlDbType.VarChar,255)
????prmPersonImageType.Value=strImageType
????myCommand.Parameters.Add(prmPersonImageType)
????Try
????????myConnection.Open()
????????myCommand.ExecuteNonQuery()
????????myConnection.Close()
????????Response.Write("Newpersonsuccessfullyadded!")
????CatchSQLexcAsSqlException
????????Response.Write("InsertFailed.ErrorDetailsare:"&SQLexc.ToString())
????EndTry
?
它是怎样事情的?
工具PersonImage是HTMLInputFile控件。起首我们要取得被拔出图片的巨细,经由过程以下办法完成:
intImageSize=PersonImage.PostedFile.ContentLength
接着要经由过程ContenType属性取得图片范例。最初最主要的是要取得图片文件流,经由过程以下办法完成:
ImageStream=PersonImage.PostedFile.InputStream
我们有一个byte数组ImageContent,筹办用来保留图片内容。全部图片经由过程Stream工具的Read办法读取,这个办法有三个参数,即:
#被复制的图片内容的方针地位
#读的入手下手地位
#必要被读的子节数
读声明以下:
intStatus=ImageStream.Read(ImageContent,0,intImageSize)
如今,我们读取了全部图片内容。接着我们必要把图片内容拔出SQL数据表中,我们将用用一个存储历程把图片范例和图片拔出SQL数据表。假如你看过下面的代码清单,你就晓得我们把数据范例设置为SqlDbType.Image.就如许,我们乐成地把图片保留到了SQLSERVER数据库。
例子的输入样例
图:将图片保留到sqlserver数据库
测试上面的代码
代码下载
点击这里下载ASPX页
点击这里下载存储历程
总结
如许,我们完成了如何把图片保留到数据库的会商。我们也筹办好了利用下面的下载部分供应的例子和存储历程。假如你想晓得如何从SQLSERVER中读取图片,请参阅我的这篇文章RetrievingImagesfromSqlServerinASP.NET
译者注:因为遭到HTTP传输协定的限定,在分歧的情况下可以上载文件的巨细纷歧。关于要上传年夜文件的WEB使用程序来讲,这并非一个完善的办理计划,只是为我们供应了一种绝对较好的办法。我已经用这类办法在局域网中乐成上载30M的文件,可是在体系功能较低的别的一个本机体系中,最多只能上载5M的数据。别的必要读者注重的是,上载年夜文件的时分要得当修正machine.config和web.config文件,只需你翻开这些文件就能够晓得如何得当的修正。初度翻译,还看人人多多斧正。
</p>因为ASP脚本语言非常简单,因此其代码也简单易懂,结合HTML代码,可快速地完成网站的应用程序。还无法完全实现一些企业级的功能:完全的集群、负载均横。 |
|