首页 文萃 技术文档 二手市场 培训机构 e书下载 五星图书 考试资源 软件下载 标准下载 最新资讯
图书资源 留言板 联系我们
在ASP.Net 中实现将图片存入数据库|西安信息资源网|E书下载|电子书下载|信息发布


在ASP.Net 中实现将图片存入数据库 转帖

推荐人:WD

 
     在很多时候,我们有这样的需求:把图片存入到数据库当中。在一些应用程序中,我们可能有一些敏感的资料,由于存储在文件系统(file system)中的东西,将很容易被某些用户盗取,所以这些数据不能存放在文件系统中。 

     在这篇文章中,我们将讨论怎样把图片存入到Sql2000当中。 

     在这篇文章中我们可以学到以下几个方面的知识: 

     1. 插入图片的必要条件 

     2. 使用流对象 

     3. 查找准备上传的图片的大小和类型 

     4.怎么使用InputStream方法? 

 
 插入图片的必要条件 

 在我们开始上传之前,有两件重要的事我们需要做: 

 #Form 标记的 enctype 属性应该设置成 enctype="multipart/form-data" 

 # 需要一个<input type=file>表单来使用户选择他们要上传的文件,同时我们需要导入 System.IO名称空间来处理流对象 

 把以上三点应用到aspx页面。同时我们需要对SqlServer做以下的准备。 

 # 需要至少含有一个图片类型的字段的表 

 # 如果我们还有另外一个变字符类型的字段来存储图片类型,那样会更好一些。 

 现在,我们准备了一个Sql表(包含了一个image数据类型的字段),还有<input type=file>标记。当然我们还得准备Submit按钮,以便用户在选择了图片以后提交。在这个按钮的Onclick事件里,我们需要读取选取图片的内容,然后把它存入到表里。那我们先来看看这个Onclick事件。 

 提交按钮的Onclick事件的代码: 

 

 Dim intImageSize As Int64 
      Dim strImageType As String 
      Dim ImageStream As Stream 

     ’ Gets the Size of the Image 
     intImageSize = PersonImage.PostedFile.ContentLength 

     ’ Gets the Image Type 
     strImageType = PersonImage.PostedFile.ContentType 

     ’ Reads the Image 
     ImageStream = PersonImage.PostedFile.InputStream 

     Dim ImageContent(intImageSize) As Byte 
     Dim intStatus As Integer 
     intStatus = ImageStream.Read(ImageContent, 0, intImageSize) 

     ’ Create Instance of Connection and Command Object 
     Dim myConnection As New SqlConnection(ConfigurationSettings.AppSettings("ConnectionString")) 
     Dim myCommand As New SqlCommand("sp_person_isp", myConnection) 

     ’ Mark the Command as a SPROC 
     myCommand.CommandType = CommandType.StoredProcedure 

     ’ Add Parameters to SPROC 
     Dim prmPersonImage As New SqlParameter("@PersonImage", SqlDbType.Image) 
     prmPersonImage.Value = ImageContent 
     myCommand.Parameters.Add(prmPersonImage) 

     Dim prmPersonImageType As New SqlParameter("@PersonImageType", SqlDbType.VarChar, 255) 
     prmPersonImageType.Value = strImageType 
     myCommand.Parameters.Add(prmPersonImageType) 

     Try 
         myConnection.Open() 
         myCommand.ExecuteNonQuery() 
         myConnection.Close()

        Response.Write("New person successfully added!") 
     Catch SQLexc As SqlException 
         Response.Write("Insert Failed. Error Details are: " & SQLexc.ToString()) 
     End Try 

 

 这是怎么工作的呢? 
 PersonImage是HTMLInputFile控件的对象。首先需要获得图片的大小,可以使用下面的代码实现: 

 intImageSize = PersonImage.PostedFile.ContentLength 

 然后返回图片的类型使用ContenType属性。最后,也是最重要的事就是取得Image Stream,这可以用以下代码实现: 

 ImageStream = PersonImage.PostedFile.InputStream 

 我们需要一个字节型数组来存储image 内容。读取整个图片可以使用Stream对象的Read方法来实现。Read(in byte[] buffer,int offset,int count)方法有三个参数。【关于Read方法的详细可以参看.Net FrameWorkSDK】他们是: 

 buffer  

 字节数组。此方法返回时,该缓冲区包含指定的字符数组,该数组的 offset 和 (offset + count) 之间的值由从当前源中读取的字节替换。  

 offset  

 buffer 中的从零开始的字节偏移量,从此处开始存储从当前流中读取的数据。  

 count  

 要从当前流中最多读取的字节数。  

 这个Read方法用以下代码实现: 
 intStatus = ImageStream.Read(ImageContent, 0, intImageSize) 
 . 

 现在,我们已经读取了整个图片的内容,下一步,我们要把这些内容存入到sql 表。我们将使用存储过程来完成插入图片类型和图片内容到sql 表。如果你浏览了上面的代码,你将会发现我们使用了sqldbtype.image的数据类型(datatype)。Ok了,完成了这些,我们也就成功的把图片存入到SqlServer中了。下面是我们编写的aspx页面。  

 图片存入数据库结论 

 我们已经讨论了如何把图片存入到Sql Server,那么我们如何从SqlServer中读取图片呢?可以参看我的另一篇文章:在asp.net(微软最强的开发语言)中从SqlServer中检索图片。 
 本文来源于 WEB开发网 原文链接:http://www.cncms.com.cn/aspnet/5799_2.htm

 

[收藏本文]   [发表评论]  [查看评论我要推荐文章

上一篇:JSP图形验证码的系统设置 下一篇:Apache配置完全教程(Linux)

最新参与TOP10
ascall码
【经典推荐】每个JAVA初学者都应该搞懂的问题
成功安装Mysql+Apache2+php5过程
五种提高 SQL 性能的方法
配置Eclpise+tomcat并实现JSP的编写与部署
Eclipse 3.0 上配置JSP开发环境
PHP中的XML拉模式详解
php的ajax框架xajax入门与试用
win2000server IIS和tomcat5多站点配置
JSP连接SQL Server 2000系统配置

西安信息资源网 版权所有 全球排名

QQ:363694816