【发布时间】:2014-01-20 20:17:58
【问题描述】:
假设我希望将我上传的文件存储在如下所示的子目录结构中:
/uploads/0/0/kitten.jpg;
/uploads/0/1/kitten1.jpg;
/uploads/1/10/pic.jpg;
这样每个子文件夹最多可以包含 999 个文件,即当 /uploads/0/ 达到其限制时,文件夹 /uploads/1/ 会自动创建,下一个文件会放在那里。每个文件夹还可以包含 999 个子文件夹。
问题是 - 我该怎么做? 我主要关心的是如何确定将新上传的文件放在哪里。你能描述一下算法吗?我想不出比每次都执行这些步骤更好的方法了:
-
在 /uploads/ 中查找最新创建的文件夹,如果它是空的 - 创建一个,如下所示:
$contents = $scandir('/uploads'); $dirs = array(); foreach ($contents as $path) { if (is_dir($path)) { $dirs[] = $path; } } if (empty($dirs)) { //create new dir and save file there subsequently $saveTo = $parentDir . DIRECTORY_SEPARATOR . "1" . DIRECTORY_SEPARATOR . "1"; mkdir($saveTo, 0777, true); } else { $last = array_pop($dirs); } - 我们对这个子文件夹做的基本相同等等(我想我可能想以某种方式在这里使用递归)。我是在朝着正确的方向前进,还是我把事情复杂化了?有一个更好的方法吗?任何事,请。我只是 php 和编码的初学者。
【问题讨论】:
-
您介意使用日期(例如 2013/4/5)作为子文件夹吗?
-
又如何区分同一天上传的文件呢?可能有成千上万个。我需要将每一个存储在单独的文件夹中。
标签: php file-upload uploading