C#:将图像保存到数据库中

问题描述:

有人可以给我一些关于如何在C#中将图像文件保存到数据库的建议吗? 我将节省大量图片,因此减少需要的空间 的最佳方式是什么? 我目前在DB中使用varbinary(max)字段。C#:将图像保存到数据库中

谢谢!

+0

使用什么类型的数据库通信? (Linq2SQL,Linq2Entity也许) – Magnus 2011-04-27 14:59:18

+0

SQL Server ..... – Jerald 2011-04-27 15:00:25

+0

你通常如何保存东西给你的SQL Server? – Magnus 2011-04-27 15:01:51

如果您必须存储在SQL实际的文件然后确保你把周围的图像的大小一些限制,以确保正确规划数据库大小 - 您期望的图像大小和大小是多少?

如果您必须将其存储在SQL中,我的首选项是自动将它放在它自己的SQL数据库中。这样,我遇到这些图像的任何性能问题都不会影响我的数据库的其余部分。

现在,如果您不必将图像存储在SQL数据库中,那么我认为这只是调用了Azure Blob存储。去看看它 - 它会给你你想要的一个非常有效的系统。

如果你不能使用Azure,那么你应该把一个类处理读/写/查找映像到文件系统。保存到文件系统(正确完成)将比保存到SQL更好。

这样可以。但是,如果这些镜像非常大,并且您的DBA可能不再喜欢将它们放在那里,您可以将它们放置在某个驱动器上并将该位置存储在数据库中。

我想有很多方法可以处理这个问题。只要权衡你的利弊。

我刚给你一个选择。

将图像存储在数据库中不是一个好主意。您可以将这些网址存储到图片中。

+0

你输入的比我快。是的,听这个人。 – 2011-04-27 15:02:54

+1

可以使用'Filestream'类型来代替'varbinary(max)' – Magnus 2011-04-27 15:03:43

什么格式的图片以及您使用的是哪种数据库技术?

一种选择是将图像转换为二进制数组并将其推送到您的数据库。我发现了如何在CodeProject做到这一点了一些不错的代码:

http://www.codeproject.com/KB/aspnet/ImageInDatabase.aspx

就像Magnus所说的,FileStreams不存储在数据库的页面中,所以它不会影响性能。

尽管将文件存储在数据库中意味着您的数据库备份将变得更大。

其他人提到只存储URL。这也是一个好主意,也可能是一个简单设置的最符合要求。