在ASP.NET中把图片保存到SQL SERVER数据库 comy(翻译)

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情
CSDN - 文档中心 - .NET    
标题    在ASP.NET中把图片保存到SQL SERVER数据库    comy(翻译)
关键字    asp.net 图片 sql server 数据库 image 上载
出处    http://http://aspalliance.com/das/insertimage.aspx

ASP.NET中把图片保存到SQL SERVER数据库

翻译:吕绍伟

介绍

在很多情况下,我们需要把图片保存到数据库中。在某些应用程序中,存在一些敏感信息不能被存储到文件系统中,因为存储在文件系统上的任何图片都很容易被用户非法获得。

本文将讨论在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事件代码

 

  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数据库。

例子的输出样例

例子的输出样例

图:将图片保存到sql server 数据库

测试下面的代码

代码下载

点击这里下载ASPX页

点击这里下载存储过程

总结

这样,我们完成了怎样把图片保存到数据库的讨论。我们也准备好了使用上面的下载部分提供的例子和存储过程。如果你想知道怎样从SQL SERVER中读取图片,请参阅我的这篇文章Retrieving Images from SqlServer in ASP .NET

译者注:由于受到HTTP传输协议的限制,在不同的环境下能够上载文件的大小不一。对于要上传大文件的WEB应用程序来说,这并不是一个完美的解决方案,只是为我们提供了一种相对较好的方法。我曾经用这种方法在局域网中成功上载30M的文件,但是在系统性能较低的另外一个本机系统中,最多只能上载5M的数据。另外需要读者注意的是,上载大文件的时候要适当修改machine.config和web.config文件,只要你打开这些文件就可以知道怎样适当的修改。初次翻译,还望大家多多指正。

ASP.NET中把图片保存SQL SERVER数据库 ASP.NET中把图片保存SQL SERVER数据库翻译:吕绍伟介绍在很多情况下,我们需要把图片保存数据库中。在某些应用程序中,存在一些敏感信息不能被存储到文件系统中,因为存储在文件系统上的任何图片都很容易被用户非法获得。本文将讨论在ASP.NET中怎样把图片保存SQL SERVER数据库中。在本文中我们将了解到以下几方面的内容:l         上载图片文件的要 阅读详情

相关推荐

VS(MFC)保存图片SQLServer数据库

在MFC中将图片以二进制格式直接保存SQLServer数据库

weixin_46405486的博客 2351

asp.net上传图片保存数据库的代码

数据库保存图片的数据格式 图象二进制数据储存字段前台: 代码如下: <%@ Page Language=”C#” AutoEventWireup=”true” CodeBehind=”UploadWork.aspx.cs” Inherits=”meishuguan.UploadWork” %> <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”> <html xmlns=”http://www.w3.o

ASP.NET图片数据库存储方案

SQL Server 通过VARBINARYBINARY和IMAGE等数据类型支持二进制数据的存储。其中,是存储大型二进制对象的常用选择,它可以存储最大为2GB的数据。使用可以这样创建表:此表设计允许存储文档的元数据以及文档内容本身。数据类型存储的是二进制数据,对于存储图片、视频或其他大型文件非常有用。创建表时,为二进制字段设置合适的数据类型和长度是至关重要的。这将直接影响数据的存储效率和检索性能。除了数据类型外,还可以为字段设置默认值、标识属性等其他约束。

weixin_42592399的博客 570

ASP.NET图片以二进制的形式保存数据库

ASP.NET图片以二进制的形式保存数据库

ASP.NET中存取图片数据库的示例

//开发环境:Window 2000、SQLServer2000、.Net Framework SDK正式版 //开发语言:C#、ASP.Net //简介:数据库图片存蓄及读取 //作者:engine /* 说明:在ASP中,我们用Request.TotalBytes、Request.BinaryRead()来上传图片,这个可恶的BinaryRead()方法非常笨,单个文件上传倒没什么大事,单如

神奇小子技术出世 951

图片保存数据库和从数据库读取图片并显示(C#)

图片保存数据库的方法:        public void imgToDB(string sql)        {   //参数sql中要求保存的imge变量名称为@images            //调用方法如:imgToDB("update UserPhoto set Photo=@images where UserNo='" + temp + "'");            Fi...

weixin_33767813的博客 626

怎么把图片保存到oracle数据库,如何将图片保存SqlServer、Oracle、Access数据库中。...

如何将图片保存sqlServer、Oracle、Access数据库中。首先,我们要明白图片是以二进制的形式保存数据库中的,那么把图片保存数据库中的步骤大体上有这几步1.图片转换为二进制数组(byte[]);2.把转换后的二进制数组(byte[])作为参数传递给要执行的Command;3.执行Command;首先,如何把图片转换成byte[],如果你使用的是ASP.Net2.0,那么你可以使...

weixin_42320332的博客 1318

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

介绍   可能有很多的时候,我们急需把图片存入到数据库当中。在一些应用程序中,我们可能有一些敏感的资料,由于存储在文件系统(file system)中的东西,将很容易被某些用户盗取,所以这些数据不能存放在文件系统中。  在这篇文章中,我们将讨论怎样把图片存入到Sql2000当中。  在这篇文章中我们可以学到以下几个方面的知识:1.     插入图片的必要条件2.     使用流

1593

ASP.NET--图片上传保存url到数据库

ASP.NET--图片上传保存url到数据库 开发工具:Visual Studio 2015、SQL Server 2014 Management Studio 关键技术:C# MVC 作者:刘东标 撰写时间:2019年1月18日 实现效果: 、、、、、、、、、、、、、、、、、html代码、、、、、、、、、、、、、 &lt;/table&gt; ...

weixin_44538423的博客 2276

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

本方法相对独立,直接放到页面中,调用即可,返回上传后图片的路径,图片名称已经修改为纯数字+后缀名 /// /// 上传文件,返回保存的路径/文件名 /// /// web控件 /// 文件夹路径 /// private string UploadFile(FileUpload fupload, string Folder) {

云上人间钦自赏 3745

asp.net图片上传并存储数据库

一,上传并存入SqlServer 数据库结构   create table test   {      id identity(1,1),      FImage image   }   相关的存储过程   Create proc UpdateImage   (      @UpdateImage Image   )   As   Ins

kukufei的专栏 1416

asp.net 批量上传图片保存数据库

表结构: tb_pic ID (int)主键自增 pic (varchar(max)) 上传图片的路径 xxxx.aspx     批量上传图片                     var i = 1;         function addFile() {             if (i                 var str

Sometimes_Ymc的博客 2491

ASP.NET创建和保存图片数据库

ASP.NET创建和保存图片数据库                           By Max Cappellari MCSD  译 涟漪勇 下载源码 当我们开发电子商务类型的网站,我们一定会遇将每一个产品的产品图片(大图片和所略图)存储数据库的问题,每一个产品的同一个图片上传两种大小不同的尺寸似乎是件不可能...

weixin_34095889的博客 373

ASP图片存入数据库

一、设计数据库testimg.mdb为方便调试,设计表imgurl,其中两个字段:id(自动编号、关键字)、img(OLE 对象)二、连接数据库文件conn.asp db_path="testimg.mdb"set conn=server.CreateObject("ADODB.connection")connstr="driver={Microsoft Access Driver

inrg's blog 1486

Asp.NetSqlServer中的图片存取

在使用asp.net图片上传并存入SqlServer中,然后从SqlServer中读取并显示出来 一,上传并存入sqlserver  数据库结构   create table test   {      id identity(1,1),      FImage image   }   相关的存储过程   Create proc UpdateImage   (      @UpdateImage...

weixin_33923762的博客 213

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

当我们有大量的图片或者图片比较大时,我们常规的做法可能是保存图片路径,但是也不排除需要将图片直接存放到数据库的情况,此时就需要保存图片数据库了。这篇文章我会向大家介绍: 如何通过FileUpLoad控件将图片保存数据库 如何通过Button控件从数据库导出图片 具体步骤如下: 保存图片数据库 第一步:首先在数据库创建一个名为“Images”的表,代码如下: ...

akn76920的博客 437
上一篇: 在ASP.NET中使用Microsoft Word文档
下一篇: 初学Javascript之cookie篇(译)
rickjelly2004
博客等级 码龄23年 19粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值