如何在ASP.Net 中把图片存入数据库

转载 2006年06月06日 16:02:00

介绍

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

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

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

1.     插入图片的必要条件

2.     使用流对象

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

4.怎么使用InputStream方法?



插入图片的必要条件

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

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

# 需要一个表单来使用户选择他们要上传的文件,同时我们需要导入 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



这是怎么工作的呢?
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中检索图片

 

ASP.Net将图片以二进制方式存入数据库,并读取

把图片转换成二进制--把二进制转换成图片 private void button1_Click(object sender, EventArgs e) ...
  • my98800
  • my98800
  • 2016年11月08日 09:17
  • 1072

在ASP.NET中将图片存储到Sql Server数据库中

1:创建aspx页面。        在这一步,我们需要一个FileUpload控件,同时最重要的是需要将Form的enctype属性设置为multipart/form-data。该FileUp...
  • letIgo
  • letIgo
  • 2011年09月21日 19:47
  • 419

asp.net(c#)从数据库里读取图片并显示到页面

这里我就不讲怎么读取第一种的方法了,因为太简单了,只是读取路径出来再将路径赋给你想要绑定的控件上就可以了。这里我只是单独讲一下,怎么读取二进制流的图片。    为了简单点讲,我就只是在页面显示一张图...

ASP.NET如何存取SQL Server数据库图片(转)

SQL Server提供了一个特别的数据类型:image,它是一个包含binary数据的类型。下边这个例子就向你展示了如何将文本或照片放入到数据库中的办法。在这篇文章中我们要看到如何在SQL Serv...

ASP.NET MVC 4 - 上传图片到数据库

这里演示如何在MVC WEB应用程序如何上传图片到数据库以及如何在WEB页面上显示图片。数据库表对应整个Model类,不单图片数据一个字段,我们从数据表的定义开始: CREATE TABLE...

ASP.Net数据库如何存取图片

当我们有大量的图片或者图片比较大时,我们常规的做法可能是保存图片路径,但是也不排除需要将图片直接存放到数据库的情况,此时就需要保存图片到数据库了。这篇文章我会向大家介绍: 如何通过FileUpL...

Asp.net 上传图片,保存路径到数据库

本方法相对独立,直接放到页面中,调用即可,返回上传后图片的路径,图片名称已经修改为纯数字+后缀名 /// /// 上传文件,返回保存的路径/文件名 /// ///...

ASP.NET中常用功能代码总结(3)——上传图片到数据库

一.上传图片到数据库  1///   2/// 上传图片  3///   4private void UploadFile()  5{  6    ///得到用户要上传的文件名  7...
  • jurken
  • jurken
  • 2014年10月04日 21:02
  • 378

实现ASP.NET数据库图片上传与读取的功能

以下代码实现ASP.NET数据库图片上传与读取的功能,详细见代码内部的注解。 开发环境:Window 2000、SQLServer2000、.Net Framework SDK正式版 开发...

asp.net 图片和数据库的交互

ReadImage.aspx页面 单独输出二进制流图片的页面,引用传来的参数 ImageID,如  ReadImage.aspx?ImageID=0001 写法1:   if(!IspostB...
  • cqkxzyi
  • cqkxzyi
  • 2011年10月21日 17:04
  • 938
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何在ASP.Net 中把图片存入数据库
举报原因:
原因补充:

(最多只允许输入30个字)