Я обычно придерживаюсь этого подхода:
Имеют глобальную переменную настроек для вашего приложения, которая указывает на папку, в которой вы храните загруженные файлы. В вашей базе данных храните относительные пути к файлам (относительно того, на что указывает переменная настроек).
Так что, если файл находится по адресу /www/uploads/image.jpg, переменная ваших настроек указывает на / www / uploads строку вашей базы данных с image.jpg. Это гибкий способ, позволяющий отделить структуру каталогов вашей системы от вашего приложения.
Далее вы можете фрагментировать файловое хранилище в каталогах в зависимости от того, к каким таблицам базы данных они относятся. Скажем, у вас есть таблица user_reports и таблица user_photos. Вы храните файлы, относящиеся к user_reports, в / www / uploads / user_reports. Если у вас есть большое количество пользовательских загрузок, вы можете реализовать фрагментацию еще дальше. Скажем, пользователь загружает файл 20.03.2009, файл называется report.pdf, поэтому вы храните его по адресу /www/uploads/user_reports/2009/03/20/report.pdf.
.