我想在多个文件夹中分隔存储在服务器上的图像。我想创建这个结构/图像/年/月(images / 2011/04)。 文件名存储在数据库中,也可以创建日期。对于单独的文件,这是一个好主意吗?
答案 0 :(得分:1)
听起来不错。我运行了一个照片启动大约5年,并使用类似的结构来存储照片。它应该适度缩放(我们有≈1M的照片)。我还会考虑存储图像的sha1或md5哈希值,以便您可以轻松检测重复项,并确保在将文件名称保存到磁盘之前对其进行规范化。
答案 1 :(得分:1)
嗯,这部分取决于你想要用它们做什么,以及你认为是一个大数字。
与数据库中的索引列一样,此方案可能会使某些操作受益,并对其他操作有害。
例如,在没有的日期可用的简单方案中,能够根据其名称的一部分找到图像可能最终会变得更加困难,因为你会有不知道它会在哪里。我已经将这个方案用于日志文件之类的东西,但这很有效,因为我已经知道它将在哪里:
/logs/2011/01/2011_01_14.log
并没有去寻找它。
现在您已经解决了这个特定问题,因为您的数据库条目也保留了日期,所以我看不到您的方案有任何直接问题。这并不是说不是任何: - )
我的建议是最初做最简单的事情(平面目录格式),只有当它成为一个问题时才会担心它。由于您有日期,因此将基于此的所有图像移动到单独的目录将是一件简单的事情。
当然,如果您已经实现了单独的目录,请坚持下去。同样,如果方法存在缺陷,将来应该相对容易调整。
想要考虑的一件事是将位置(绝对或相对于已知点)存储在数据库中,而不仅仅是日期。然后你将使用它(而不是日期的操作)来定位文件。
这将允许您完全更改用于放置文件的方法,而无需更改任何位于它们的代码。