2010-02-11 92 views
1

我正在创建处理“大量”图像的网站。我决定使用多个目录方法来存储文件,例如。 images/efg/ed/ehj/efgedehjokjvdf2jn4.jpg从文件名创建目录?

我在想,防止文件名重复是采取当前timedate +一些随机字符串+ md5这些=随机字符串的好行。大多数我想知道如何创建这些路径?什么是管理这些的最佳方式?我们正在谈论10,000 - 30,000图像的初学者..

所以,如果有人有很好的提示或可能共享一些代码,那将是太棒了! :)哦,是的,我使用CodeIgniter这个项目,如果有帮助?

+0

我们也许可以想出更好的解决方案,如果你能告诉我们在存储完这些图像之后会如何处理这些图像,比如应该如何访问这些图像等等。了解知道谁上载图片很重要也很有用。 – Randell 2010-02-14 19:50:19

回答

2

KISS

date('Y')/date('md')/date('Hi')/md5($image).ext 

这很简单,我不认为你会在一分钟之内将超过32K的文件。


如果您不需要分钟,可与最多8928子目录工作,你可能只是这样做:

date('Y')/date('mdH')/md5($image).ext 
+0

比我的解决方案更好,因为我没有考虑每天添加32K图像 - 只是最初的一批:-) – niggles 2010-02-12 05:57:32

1

将散列的前4个十六进制字符转换为第一级目录,将第二个4进制转换为第二级。将文件与完整散列一起存储在那里。

+0

老兄检查我的url的例子? – Marko 2010-02-11 21:56:57

0

我会为图片本身使用一个uid,但是每个目录中没有32,000个文件的限制吗?这几乎会被立即超过,所以你仍然需要一些目录结构。

难道你不能制作一个新的文件夹和他们上传的日期,并保存在一个数据库列和uid在另一个 - >你不会超过32,000天的图像。