ASP.NET中让图片以二进制的形式存储在数据库中
2018-06-18 03:18:15来源:未知 阅读 ()
今早有个网友问到我这问题,以前我都是直接在数据库中存文件名的,还没有试过存储整张图片到数据库中,上网搜索了一下,自己又测试了一番,代码如下:
建立保存图片的表的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
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:接口和抽象类有什么区别
- 二进制枚举之被RE完虐的我的一天 2020-01-03
- c++ 内存二进制表示 2019-10-25
- Java 操作Word书签(三):用文本、图片、表格替换书签 2019-08-29
- 剑指offer11:输入一个整数,输出该数二进制表示中1的个数。 2019-08-26
- 图的存储 2019-02-20
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash