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

简介: 今早有个网友问到我这问题,以前我都是直接在数据库中存文件名的,还没有试过存储整张图片到数据库中,上网搜索了一下,自己又测试了一番,代码如下:建立保存图片的表的SQL语句:代码USE [niunantest]GO/****** 对象:  Table [dbo].
     今早有个网友问到我这问题,以前我都是直接在数据库中存文件名的,还没有试过存储整张图片到数据库中,上网搜索了一下,自己又测试了一番,代码如下:

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

img_405b18b4b6584ae338e0f6ecaf736533.gif 代码
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();
        } 

 

 

 

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

img_405b18b4b6584ae338e0f6ecaf736533.gif 代码
        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 

 

目录
相关文章
|
4月前
|
开发框架 Oracle 关系型数据库
ASP.NET实验室LIS系统源码 Oracle数据库
LIS是HIS的一个组成部分,通过与HIS的无缝连接可以共享HIS中的信息资源,使检验科能与门诊部、住院部、财务科和临床科室等全院各部门之间协同工作。 
62 4
|
4月前
|
存储 SQL 开发框架
分享88个ASP贺卡图片源码,总有一款适合您
分享88个ASP贺卡图片源码,总有一款适合您
34 2
|
4月前
|
SQL 存储 开发框架
分享107个ASP贺卡图片源码,总有一款适合您
分享107个ASP贺卡图片源码,总有一款适合您
45 1
|
4月前
|
SQL 开发框架 JavaScript
分享66个ASP贺卡图片源码,总有一款适合您
分享66个ASP贺卡图片源码,总有一款适合您
44 0
|
16天前
|
存储 开发框架 .NET
ASP.NET Web Api 使用 EF 6,DateTime 字段如何取数据库服务器当前时间
ASP.NET Web Api 使用 EF 6,DateTime 字段如何取数据库服务器当前时间
|
4月前
|
PHP 数据库
DIY私人图床:使用CFimagehost源码自建无需数据库支持的PHP图片托管服务-2
DIY私人图床:使用CFimagehost源码自建无需数据库支持的PHP图片托管服务
|
4月前
|
存储 PHP Apache
DIY私人图床:使用CFimagehost源码自建无需数据库支持的PHP图片托管服务-1
DIY私人图床:使用CFimagehost源码自建无需数据库支持的PHP图片托管服务
|
4月前
|
存储 PHP Apache
使用CFimagehost源码搭建无需数据库支持的PHP免费图片托管私人图床
使用CFimagehost源码搭建无需数据库支持的PHP免费图片托管私人图床
|
4月前
|
前端开发 数据库连接 数据库
ASP.NETMVC数据库完整CRUD操作示例
ASP.NETMVC数据库完整CRUD操作示例
56 0
|
10月前
|
存储 SQL 监控
.NET开源简单易用、内置集成化的控制台、支持持久性存储的任务调度框架 - Hangfire
.NET开源简单易用、内置集成化的控制台、支持持久性存储的任务调度框架 - Hangfire
下一篇
云函数