ASP.NET中让图片以二进制的形式存储在数据库中

     今早有个网友问到我这问题,以前我都是直接在数据库中存文件名的,还没有试过存储整张图片到数据库中,上网搜索了一下,自己又测试了一番,代码如下:

建立保存图片的表的SQL语句:

代码

USE [niunantest]
GO
/****** 对象:  Table [dbo].[picdata]    脚本日期: 03/30/2010 14:51:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[picdata](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [content] [image] NULL,
    [createdate] [datetime] NOT NULL CONSTRAINT [DF_picdata_createdate]  DEFAULT (getdate()),
 CONSTRAINT [PK_picdata] PRIMARY KEY CLUSTERED 
(
    [id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

 

 

下面是保存图片到数据库中的代码片段:

        int len = fu.PostedFile.ContentLength;  // 图片大小
        byte[] pic = new byte[len];  // 创建一个字节数组,大小为图片的大小,数据库中就存储这个东西
        fu.PostedFile.InputStream.Read(pic, 0, len); // 把上传控件中的文件用二进制读取存到pic字节数组中
        //   插入图片到数据库中     
        SqlConnection connection = new
        SqlConnection(@"server=.\sqlexpress;database=niunantest;uid=sa;pwd=123456");
        try
        {
            connection.Open();
            SqlCommand cmd = new SqlCommand("insert   into   picdata   "
            + "([content])   values   (@pic)", connection);
            cmd.Parameters.Add("@pic", pic);
            cmd.ExecuteNonQuery();
            Label1.Text = "图片插入数据库成功!";

            Image1.ImageUrl = "getpic.ashx?t=" + DateTime.Now.Ticks;  // 显示刚刚插入数据库的图片
        }
        finally
        {
            connection.Close();
        } 

 

 

 

下面是从数据库中取出图片的代码片段:

代码

        MemoryStream stream = new MemoryStream();
        SqlConnection connection = new
        SqlConnection(@"server=.\sqlexpress;database=niunantest;uid=sa;pwd=123456");
        try
        {
            connection.Open();
            SqlCommand command = new
            SqlCommand("select top 1  [content]   from   picdata order by id desc", connection);
            byte[] image = (byte[])command.ExecuteScalar();
            stream.Write(image, 0, image.Length);
            Bitmap bitmap = new Bitmap(stream);
            context.Response.ContentType = "image/jpeg";
            bitmap.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
        }
        finally
        {
            connection.Close();
            stream.Close();
        } 

 

 

    其实也就是通过流把图片搞成字节数组再存到数据库中,然后再从数据库中读取字节数组出来,再通过字节数组创建流,再通过流把图像输出出来,发现你存到数据库中的是gif图像的话再取出来是可以把他转为jpg的图像的,因为在取出图像的时候我们设置他的ContentType是image/jpeg了。

源码下载:http://niunan.net/download/picsave2db.7z 

 

时间: 2024-10-04 17:37:53

ASP.NET中让图片以二进制的形式存储在数据库中的相关文章

ASP.NET实现图片以二进制的形式存入数据库_实用技巧

本文以实例形式讲述了ASP.NET实现图片以二进制的形式存入数据库的方法.过去我们都是直接在数据库中存入图片文件名的,还没有试过存储整张图片到数据库中,经过一番资料查询与测试,整理出了如下的功能代码: 1.建立保存图片的表的SQL语句: USE [niunantest] GO /****** 对象: Table [dbo].[picdata] 脚本日期: 03/30/2010 14:51:58 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER

SSIS: 把存储在数据库中的图片导出来

原文:SSIS: 把存储在数据库中的图片导出来 Data Flow Task Step 1 获取二进制图片数据 declare @path varchar(100)='C:\labs\Images\' SELECT ThumbNailPhoto,@path+ThumbnailPhotoFileName as Path from Production.ProductPhoto Step 2 在Export Column里面设置  Extract Column和 File Path

php项目中,ueditor上传图片后图片路径如何获取并保持到数据库中?

问题描述 php项目中,ueditor上传图片后图片路径如何获取并保持到数据库中? php项目中,ueditor上传图片后图片路径如何获取并保持到数据库中? 解决方案 你是上传了之后不用还是会选择到编辑器中,如果选择到编辑器中,那就直接加编辑器改变事件,再用正规则把图片自己匹配出来就可以了

java-Java 导入带图片的excel,并添加到数据库中,如何写?

问题描述 Java 导入带图片的excel,并添加到数据库中,如何写? 已经获取到图片信息,接下来如何做? filename获取的是文件名,如何获取文件路径+后缀名呢? 解决方案 http://download.csdn.net/detail/a_yyc1990/3511208

在C#中使得图片放大,出现未用在实例中的错误

问题描述 在C#中使得图片放大,出现未用在实例中的错误 错误类型:其他信息: 未将对象引用设置到对象的实例. 解决方案 你没有给你的picturebox设置默认的图片在你的构造函数,或者窗体的load方法中添加pictureBox1.Image = Image.FromFile(@""C:UsersPublicPicturesSample PicturesDesert.jpg""); 解决方案二: 看下pictureBox1.Image是否为null. 解决方案三:

存储到数据库中的文章,为什么取出来之后就没有换行、空格了?

问题描述 文章在存储到数据库中的时候是不是需要做一些处理呀?如果,直接存储到数据库,然后,在取出之后就没有换行.空格了,整篇文章都没有换行.空格.第一次问问题,希望大家能够帮助一下!!问题补充:我现在使用的数据库是postgres,下面朋友的回答我都试过了,但是,都不能解决我的问题,还有好的回答吗?或者比较详细的?谢谢各位朋友了 解决方案 在taxtarea中输入的文本.如果含有回车或空格.在界面上显示的时候则不哪么正常.回车消失了,空格变短了.如何解决这个问题呢.有2种方法.1.使用<pre>

请教c#高手,一张图片,通过选择其存储路径,将其存储到数据库中;再从数据库中读出来,显示在picturebox中

问题描述 请教c#高手,一张图片,通过选择其存储路径,将其存储到数据库中:再从数据库中读出来,显示在picturebox中.同理,word文档如何存取?哪位有示例代码,能发给我吗?邮箱:wangmeiyangood@126.comqq:415245048非常感谢!我是新手,分数不多.请多包涵与关照.谢谢您! 解决方案 解决方案二:需要通过什么方式找到图片?FileUpload的话,假定要将图片存储到程序目录的UpLoadImages文件夹,先使用FileUpload组件返回图片名,stringf

树结构-如何将各个级别的menu菜单存储到数据库中

问题描述 如何将各个级别的menu菜单存储到数据库中 如何将各个级别的menu菜单存储到数据库中.这些菜单类似一个树结构. 解决方案 很简单,存储菜单id,上一层菜单的id和菜单信息,这三个字段,就可以实现树型的菜单了. 解决方案二: 其中顶层菜单的上一层菜单的id为null

关于存储到数据库中的内容的加密问题

问题描述 关于存储到数据库中的内容的加密问题 使用JAVA语言编写的一个管理系统,考虑到安全因素,想把存储至MYSQL数据库中的内容(文本内容)进行加密存放,有没有比较好的办法?最好能给出一个不容易被破解的算法. 解决方案 aes des算法都可以. 解决方案二: 不知道AES DES效率怎么样?数据库的支持怎么样? 解决方案三: 数据库中存储文件路径问题