Создание каталогов из имени файла? - PullRequest
1 голос
/ 12 февраля 2010

Я создаю сайт, который обрабатывает «большое количество» изображений. Я решил использовать метод нескольких каталогов для хранения файлов, например. images/efg/ed/ehj/efgedehjokjvdf2jn4.jpg

Я думаю, что для предотвращения дублирования имени файла нужно взять текущую дату + некоторую случайную строку + md5 те = красивую строку случайной строки. В основном я задаюсь вопросом, как создать эти пути? Что было бы лучшим способом управлять этим? Речь идет о 10000 - 30000 изображений для начинающих ..

Так что, если у кого-то есть хорошие советы или, может быть, поделитесь кодом, это было бы здорово! :) О да, я использую CodeIgniter для этого проекта, если это поможет?

Ответы [ 4 ]

2 голосов
/ 12 февраля 2010

KISS

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

Это довольно просто, и я не думаю, что вы превысите 32 тыс. Файлов в любую минуту.


Если вам не нужны минуты и вы можете работать с максимум 8928 подкаталогами, вы можете просто сделать:

date('Y')/date('mdH')/md5($image).ext
1 голос
/ 12 февраля 2010

Превратите первые 4 шестнадцатеричных символа хэша в первый уровень каталогов, а вторые 4 шестнадцатеричных символа - во второй уровень. Сохраните файл там с полным хешем.

0 голосов
/ 12 февраля 2010

Я бы использовал uid для самих фотографий, но не существует ли ограничения в 32 000 файлов на каталог? Это почти сразу будет превышено, поэтому вам все равно понадобится некоторая структура каталогов.

Не могли бы вы создать новую папку с датой их загрузки и сохранить ее в одном столбце базы данных и UID в другом -> вы не собираетесь превышать 32 000 дней изображений.

0 голосов
/ 12 февраля 2010

Как насчет использования uuid?

...