На сколько правильно хранить файлы пользователей web-приложения (Spring) в каталогах по относительному адресу?
Всё зависит от общих принципов формирования адресов в приложении. Нужно делать единообразно.
Только не забывать, что если используются абсолютные ссылки, но должна быть константа или перемененная, указывающая на корень, от которого и формируются все ссылки приложения.
Есть ли какие-то альтернативные решения? Или как лучше всего хранить файлы пользователей?
Полно альтернатив. Зависит от задач и условий эксплуатации.
Можно раскидывать по датам (напр месяцам: 2023/12, 2024/01)
Можно по юзерам
Можно по теме
итд.
Можно также комбинировать способы.
Но тут важно понимать что большое кол-во файлов в каталоге может вызывать проблемы при некоторых условиях, поэтому стоит делать проверку кол-ва и распределять по другим каталогам.