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数据库中,省去了管理文件的繁琐和权限问题,同时也方便了备份和恢复。

数据库标签