用户图像 – 数据库与文件系统存储

我正在用.NET编写一个上传函数,用于在用户configuration文件中显示图像。 我在两种不同的方式之间做出select,并想就咨询和意见征询意见。

  1. 将图像直接存储在文件系统上

  2. 将图像存储在数据库中

到目前为止,我一直主要是第一个选项 – 命名用户名后的图像,因为每个用户只能有一个演示文稿图像。 然后,如果用户有图像,如果不显示默认的“无图像”图像,则在指定的path中进行检查。

我喜欢的另一件事是它节省了DB中的空间 – 数据库将相当沉重,没有额外的二进制负载。

我相信还有其他方面,我没有想过,所以我想听听你的意见。 如果任何人有一个完全不同的解决scheme,请分享,以及!

您的问题已在StackOverflow上得到解答:

将图片存储为文件或存储在networking应用程序的数据库中

包括许多其他重复的问题!

一般来说,最好将文件存储在文件系统上。 文件系统已经被调整用于存储文件。 但是,这也有它的缺点,特别是在pipe理,备份和恢复方面,它在数据库中的varchar文件path字段和文件系统中的文件之间有些脆弱的联系。 你使用什么数据库系统? 我想如果你使用的是SQL Server 2008,新的FileStreamtypes提供了一个很好的方法来存储文件在数据库中。

编辑:注意我真的在谈论更多关于存储在数据库中的文件。 尝试存储要在数据库中的HTML页面上显示的图像会涉及一些额外的复杂性。

文件系统是好的,但不实用,每个文件夹超过3000个图像。 为每3000个图像块创build自动文件夹创build效果会更好。

数据冗余性和不一致性访问数据的困难数据隔离完整性约束primefaces性问题并发访问和exception(更新安全问题

对于固定(不变)的内容,如照片,video等,文件系统将无法扩展,尤其是在目录中有大量文件的情况下,性能会受到影响。 更好的select是使用将图像存储为对象的对象存储技术,并将关联的元数据自动放入数据库中。

如何存储doc,pdf,xls,jpg文件? 哪一个推荐?

我打算在一个可能存储10000个文件的文件pipe理系统上工作,但是如果我们使用文件系统技术,问题是我非常担心病毒传播。