2010-12-14 23 views
1

基本上我有简单的表单用户用于文件上传。文件应该保存在/ files /目录下,并有一些子目录,用于几乎同等分割文件。例如/files/sub1/sub2/file1.txt结构化文件没有db

另外我需要不要存储相同的文件(按文件名)。

我有自己的解决方案。从文件名计算sha1。以前5个符号 - 例如abcde为例,将文件放在/ files/a/b/c/d/e /中,效果很好,但给出一个文件夹包含4k文件,第2个6k文件的情况。有什么办法让文件数量更接近对方?最大文件数可以是10k或10kk。

感谢您的任何帮助。

P.S.可能是我解释错了,所以再次:)任务很简单 - 你只有HTML和PHP(没有任何数据库)和文件目录,你应该只存储上传的文件没有任何自己的数据。您应该开发能够处理将文件上传到文件目录的脚本,而不必存储重复文件(按文件名),并按每个目录中的文件计数将子目录拆分上载的文件(每个目录中的最佳和计数文件应该彼此接近)。

+4

我不担心它。由于哈希如何工作,分布应该是相当随机的。 – ceejayoz 2010-12-14 20:29:19

+0

也许更好地从时间戳calc sha1? – neoneye 2010-12-14 20:32:38

+0

时间戳不起作用,因为我必须快速找到重复文件的文件名,并且不存储上传的文件,如果它已经存在。 – 2010-12-14 20:37:10

回答

0

我不知道为什么你想要它的方式。但是,如果您真的必须这样做,iI会建议您设置每个文件夹中存储多少字节的限制。每次你要救你打开日志与

  1. 当前子数据
  2. 写入到该目录中的总字节数

如果necesary您创建一个新的子diretory(你coulduse当前时间因为它不会重复),并重置ByteCount 然后保存文件并按字节数增加字节数。

我非常怀疑这是值得的工作,但我真的不知道你为什么要分配这些文件的方式。

+0

没有分贝,没有日志。只有html表单和一个函数,检查这个文件是否已经上传(按文件名)并存储它。 – 2010-12-14 20:57:29