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 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] 

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

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();
}  

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

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了。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数据库
, asp.net
, 图片
, 二进制
存入
,以便于您获取更多的相关知识。

时间: 2024-08-03 14:08:55

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

使用asp.net改变图片颜色如灰色的变成彩色_实用技巧

最近奇葩经理提出了奇葩的需求,要能在网站上改变图片的颜色,比如灰色的变成彩色,彩色的变成灰色,尼玛楼主的感受你们不懂!于是有了下面的代码. 用法:调用update_pixelColor方法并传参数即可 #region 改变图片颜色 /// <summary> /// 改变图片的颜色 /// </summary> /// <param name="filePath">图片的完整路径</param> /// <param name=&q

.Net下二进制形式的文件(图片)的存储与读取详细解析_实用技巧

.Net下图片的常见存储与读取凡是有以下几种:存储图片:以二进制的形式存储图片时,要把数据库中的字段设置为Image数据类型(SQL Server),存储的数据是Byte[]. 1.参数是图片路径:返回Byte[]类型: 复制代码 代码如下: public byte[] GetPictureData(string imagepath)        {            ////根据图片文件的路径使用文件流打开,并保存为byte[]               FileStream fs =

asp.net开发中怎样去突破文件依赖缓存_实用技巧

在Web项目中可以使用Session,Application等来缓存数据,也可以使用Cache来缓存. 今天我们特别关注的是Cache缓存.Cache位于命名空间System.Web.Caching命名空间下,看到这里我们想到的是它在Web项目中使用. 说明:Cache 类不能在 ASP.NET 应用程序外使用.它是为在 ASP.NET 中用于为 Web 应用程序提供缓存而设计和测试的.在其他类型的应用程序(如控制台应用程序或 Windows 窗体应用程序)中,ASP.NET 缓存可能无法正常工

在ASP.net中保存/取出图片入/从SQL数据库_实用技巧

一.把图片存入数据库中 用到以下几个方面的知识:1. 使用流对象2. 查找准备上传的图片的大小和类型3.怎么使用InputStream方法 插入图片的必要条件1.#Form 标记的 enctype 属性应该设置成 enctype="multipart/form-data"2.# 需要一个<input type=file>表单来使用户选择他们要上传的文件,同时我们需要导入 System.IO名称空间来处理流对象 对SqlServer做以下的准备1.# 需要至少含有一个图片类型

asp.net小孔子cms中的数据添加修改_实用技巧

题外话:我为什么研究小孔子的cms,从我自己写一个cms我就开始研究起别人的cms,早期我是研究netcms,但这系统过于庞大,看上去十分的累,也没那个精力,于是打算从一套比较小的开始研究,于是小孔子cms就进入了我的研究范围.没过多久我就放下我手中的cms,决定研究清楚有了更多经验再继续写完我没有完成的cms.        最近都在看小孔子cms的代码,其添加与修改数据十分方便,做下笔记,代码主要提取自小孔子cms,去掉了不用的函数并把相关代码写到一个文件中: 结合上面的图片,当我们要往数据

ASP.NET 实现验证码以及刷新验证码的小例子_实用技巧

实现代码 复制代码 代码如下: /// <summary>    /// 生成验证码图片,保存session名称VerificationCode    /// </summary>    public static void CreateVerificationCode()    {        int number;        string checkCode = string.Empty;         //随机数种子        Random randoms = n

asp.net下将图片保存到XML文件的方法_实用技巧

一.保存图片到XML文件 复制代码 代码如下: /// <summary> /// 保存图片到XML文件 /// </summary> private void UploadImageToXml() { ///得到用户要上传的文件名 string strFilePathName = loFile.PostedFile.FileName; string strFileName = Path.GetFileName(strFilePathName); int FileLength =

ASP.NET 图片防盗链的实现原理分析_实用技巧

那么我来介绍下图片放盗链的一个方法 首先,添加个httpHandlers请求,WEBCONFIG部分配置节如下: <httpHandlers> <add verb="*" path="*.jpg" type="myhandler,App_Code"/> </httpHandlers> 注意:对应于system.web之下,别添错了哦! 然后添加个class,取名为myhandler继承于IHttpHandler

Asp.net 2.0 无刷新图片上传 显示缩略图 具体实现_实用技巧

兼容性想还不错:FF,CH,IE,猎豹,都是可以实现的.如果看到回显.当然就是成功了. 经历了好几天的不停的钻牛角尖,终于将这个二货弄出来了.真是煞费苦心啊.但是做出来的瞬间还是蛮开心的. 第一步:我们需要加载几个JS库.jquery库.jquery.form.js库. 下载这两个库,并引用到页面中. 以下为页面中 JS 代码: 复制代码 代码如下:   function upload() {            var options = {                type: "PO