MSSQL储存图片:简便技巧

1. MSSQL储存图片的需求

在MSSQL数据库中,我们经常需要储存一些图片,例如商品图片、用户头像等等。储存图片的方式有很多种,例如将图片存储在服务器的文件系统中,通过文件路径来引用,或者将图片转换成二进制数据存储在数据库中。本文将介绍将图片以二进制数据的形式存储在MSSQL数据库中的简便技巧。

2. 创建表格

2.1 创建文件表格

在MSSQL中,我们需要创建一个表格来存储图片。首先创建文件表格:

CREATE TABLE [dbo].[Files](

[Id] [int] IDENTITY(1,1) NOT NULL,

[FileName] [varchar](100) NULL,

[Extension] [varchar](50) NULL,

[MimeType] [varchar](50) NULL,

[Data] [varbinary](max) NULL,

CONSTRAINT [PK_Files] PRIMARY KEY CLUSTERED

(

[Id] ASC

)

)

表格里包括文件名、文件后缀名、MIME类型和二进制数据。其中,varbinary(max)类型可以存储最大2GB的二进制数据。

3. 存储图片

现在,我们需要将图片转换成二进制数据,并存储在数据库中。可以使用C#或VB.NET编写代码实现,以下是C#的示例代码:

using (var stream = new MemoryStream())

{

image.Save(stream, ImageFormat.Png);

var file = new File

{

FileName = "test",

Extension = ".png",

MimeType = "image/png",

Data = stream.ToArray()

};

context.Files.Add(file);

context.SaveChanges();

}

在这段代码中,我们通过MemoryStream将图片转换成二进制数据,然后创建一个File对象,将相关属性赋值,最后将对象添加到DbContext中,并调用SaveChanges()方法保存到数据库中。

4. 显示图片

现在,我们需要从数据库中读取图片数据,并显示在网页上。以下是ASP.NET MVC的示例代码:

public ActionResult Image(int id)

{

var file = context.Files.Find(id);

if (file == null)

{

throw new HttpException(404, "File not found");

}

return File(file.Data, file.MimeType);

}

在这段代码中,我们首先通过Id找到对应的File对象。如果对象不存在,抛出404异常。如果文件存在,将二进制数据以指定的MIME类型返回给前端。

5. 总结

通过将图片以二进制数据的形式存储在MSSQL数据库中,省去了管理文件的繁琐和权限问题,同时也方便了备份和恢复。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

数据库标签