关闭

Asp.net将图片存入数据库

470人阅读 评论(0) 收藏 举报
介绍

可能有很多的时候,我们急需把图片存入到数据库当中。在一些应用程序中,我们可能有一些敏感的资料,由于存储在文件系统(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中检索图片。
 
0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

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

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

asp.net 二进制数据写入及读出以 图片方式展现

前端时间做视频智能监控,第三方自动拍照时保存至数据库,以二进制存入。 为了团队更方便后续关于此功能的开发。在此做下简易的总结:1. 数据库里 用 varbinary(MAX) , PerHomeL...
  • lzid2008
  • lzid2008
  • 2016-12-14 23:27
  • 969

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

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

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

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

如何将图片存入数据库中,并从数据库中取出图片

有时候我们想把图片存入到数据库中,尽管这不是一种明智的选择,但有时候还是不得以会用到,下面说说将图片转换成byte[]数组存入到数据库中去,并从数据库中取出来转换成图像显示出来。  首先,我们要把图片...
  • u010080448
  • u010080448
  • 2013-04-16 14:54
  • 2548

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

今天研究了一下如何将图片已二进制形式存入数据库,然后再从中读取显示在页面上。下面我会贴出一些关键代码。 1.将图片存入数据库 前台代码: 后台代码: 需要的命名空间using Syst...
  • Sky___Ice
  • Sky___Ice
  • 2013-05-28 17:40
  • 7167

java hibernate 将图片存入数据库,并从数据库取出显示在网页上

最近个项目需要用到将图片存入数据库,然后从数据库取出
  • syjgreen07
  • syjgreen07
  • 2014-04-22 14:31
  • 1693

C# 将图片的base64编码保存到Oracle数据库中

在Oracle中处理文件存储的方式是使用它自身的称为Orcale大对象内的类型也就是Oracle LOB 大对象 LOB对象有4种类型分别为: blob:二进制lob,为二进制数据,最长可达4GB...
  • u012803075
  • u012803075
  • 2016-08-17 12:19
  • 2013

java 将图片存入mysql数据库中

目前想要将用于的头像存入到数据库中,也就是将图片存入到数据库中,下面是自己参考的代码 create table image(id int NOT NULL primary key auto_incr...
  • android_lover2014
  • android_lover2014
  • 2015-04-04 12:55
  • 2640

修改FCKEditor实现将图片、文件等保存到数据库

FCKEditor是开源的富文本编辑器,其免费、跨浏览器跨平台的特点使得其在项目中得到了广泛的应用。但是FCKEditor的附件(文件、图片、Flash等)是上传保存到Web服务器的,在只有一台Web...
  • studyzy
  • studyzy
  • 2013-09-10 14:21
  • 869
    个人资料
    • 访问:178334次
    • 积分:2453
    • 等级:
    • 排名:第17385名
    • 原创:61篇
    • 转载:46篇
    • 译文:0篇
    • 评论:28条
    最新评论
    网络大本营