Say Я хочу, чтобы мои загруженные файлы будут храниться в структуре подкаталогов, как показано ниже:Как реализовать создание структуры папок для загрузки файлов на PHP
/uploads/0/0/kitten.jpg;
/uploads/0/1/kitten1.jpg;
/uploads/1/10/pic.jpg;
Так что каждая подпапка может содержать 999 файлов max, т.е. когда/uploads/0/достигает своего предела, папка/uploads/1/создается автоматически, и следующий файл идет туда. Каждая папка также может содержать 999 подпапок.
Вопрос в том, как это сделать? Моя основная проблема заключается в том, как определить, где разместить недавно загруженный файл. Не могли бы вы описать алгоритм? Я не могу придумать ничего лучше, чем выполнять эти действия каждый раз:
Глядя на последнюю созданную папку в/загрузки/и, если он пустой - создание одного, например, так:
$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, в подпапку? – Andrew
И как отделить файлы, которые были загружены в тот же день? Их могут быть тысячи. Мне нужно сохранить каждый в отдельной папке. – dKab