ASP.NET编程中怎样把图片存入到Sql2000

原创|其它|编辑:郝浩|2010-03-11 13:43:06.000|阅读 703 次

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

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

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

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

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

  1. 插入图片的必要条件

  2. 使用流对象

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

  4.怎么使用InputStream方法?

  ASP.NET数据库图片存储:插入图片的必要条件

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

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

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

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

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

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

  现在,我们准备了一个Sql表(包含了一个image数据类型的字段),还有标记。当然我们还得准备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 

  这是怎么实现ASP.NET数据库图片存储的呢?

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

  intImageSize = PersonImage.PostedFile.ContentLength

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

  ImageStream = PersonImage.PostedFile.InputStream

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

  buffer

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

  offset

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

  count

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

  这个Read方法用以下代码实现:


 intStatus = ImageStream.Read(ImageContent, 0, intImageSize)
  .

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

  ASP.NET数据库图片存储:图片存入数据库结论

  我们已经讨论了如何把图片存入到Sql Server,那么我们如何从SqlServer中读取图片呢?可以参看我的另一篇文章:在Asp.Net中从SqlServer中检索图片。


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:网络转载

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP