我正在.NET中为用户配置文件上的演示文稿图像编写上传功能。我在两种不同的方式中做出选择,并且想就优缺点提出建议和意见。
将图像直接存储在文件系统
将图像存储在数据库中
到目前为止,我一直是第一个选择 - 在用户名之后命名图像,因为每个用户只能有一个演示图像。然后,如果用户有图像,我会在指定的路径中进行检查,如果没有显示默认的“无图像” - 图像。
我喜欢这个的另一件事是它节省了数据库中的空间 - 如果没有额外的二进制负载,数据库将非常繁重。
我确信还有其他方面我没想过,所以我想听听你对此的看法。如果有人对这个问题有完全不同的解决方案,请分享一下!
答案 0 :(得分:14)
答案 1 :(得分:2)
通常,最好将文件存储在文件系统上。文件系统已经过调整以存储文件。但是,这确实有其缺点,特别是在管理,备份,还原方面,它在数据库中的varchar文件路径字段和文件系统中的文件之间有些脆弱。您使用的是什么数据库系统?我想如果您使用的是SQL Server 2008,那么新的FileStream类型提供了一种非常好的方法来存储该数据库中的文件。
编辑:注意我真的在谈论更多关于在数据库中存储文件的问题。尝试存储您打算在数据库中的HTML页面上显示的图像时会涉及一些额外的复杂性。
答案 2 :(得分:0)
文件系统很好,但每个文件夹超过3000个图像是不实用的。 最好为每3000个图像块编写自动文件夹创建。
答案 3 :(得分:0)
数据冗余和不一致 难以访问数据 数据隔离 完整性约束 原子性问题 并发访问和异常(更新 安全问题
答案 4 :(得分:0)
对于固定(不变)的内容,如照片,视频等,文件系统无法扩展,特别是如果目录中有大量文件,性能确实会受到影响。更好的选择是使用对象存储技术,该技术将图像存储为对象,并自动将关联的元数据放入数据库中。
答案 5 :(得分:-1)
如何存储doc,pdf,xls,jpg文件? 推荐哪一个?
我打算开发一个可能存储10000个文件的文件管理系统,但问题是如果我们使用文件系统技术,我非常担心病毒传播。