论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Asp.net教程
Tag:静态页面,treeview,gridview,repeater,dataset,sqldatareader,ado.net,上传,三层,ajax,xml,留言本,新闻发布,商城,注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,触发器,socket,form认证,登录,视频教程

在ASP.NET中把图片保存到SQL SERVER数据库(vb.net)

文章类别:Asp.net | 发表日期:2008-10-5 22:06:39

介绍
在很多情况下,我们需要把图片保存到数据库中。在某些应用程序中,存在一些敏感信息不能被存储到文件系统中,因为存储在文件系统上的任何图片都很容易被用户非法获得。
本文将讨论在ASP.NET中怎样把图片保存到SQL SERVER数据库中。
在本文中我们将了解到以下几方面的内容:
l         上载图片文件的要求
l         使用Strem对象
l         获得上载图片大小和类型
l         如何使用InputStream方法?
上载图片文件的要求
在开始上载前我们需要作两件重要的事情
#Form标记的enctype属性需要被设置为如下形式:
enctype="multipart/form-data"
#提供一个让用户选择图片文件的Html控件:
<input type=file>
#还要引用System.IO命名空间来处理Strem对象
上述的三项都要应用到aspx页中。在SQL SERVER中还有以下的一些要求:
#一个至少有一个字段类型为Image的表
#另外有一个用来存储图片类型的Varchar类型的字段就更好了
那么,我们有了一个有Image字段类型的数据表和一个<input type=file>(HTML文件控件)。我们还需要一个提交按钮,当用户选择好图片后可以点击它。在按钮的OnClick事件中我们要获得图片文件的内容并最终把它插入到数据表中。让我们来看看按钮的OnClick事件,它读取图片并把图片插入到数据表中。
提交按钮的OnClick事件代码
http://blog.knowsky.com/
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属性获得图片类型。最后最重要的是要获得图片文件流,通过如下方法实现:
ImageStream = PersonImage.PostedFile.InputStream
我们有一个byte数组ImageContent,准备用来保存图片内容。整个图片通过Stream对象的Read方法读取,这个方法有三个参数,即:
#被复制的图片内容的目标位置
#读的开始位置
#需要被读的子节数
读声明如下:
intStatus = ImageStream.Read(ImageContent, 0, intImageSize)
现在,我们读取了整个图片内容。接着我们需要把图片内容插入SQL数据表中,我们将用用一个存储过程把图片类型和图片插入SQL数据表。如果你看过上面的代码清单,你就知道我们把数据类型设置为SqlDbType.Image.就这样,我们成功地把图片保存到了SQL SERVER数据库。

视频教程列表
文章教程搜索
 
Asp.net推荐教程
Asp.net热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058