Всё дело в том, что физическое размещение файлов на сервере не обязано соответствовать паттерну урлов, которые будет видеть пользователь.
userfiles - это вполне может быть виртуальный путь (location в терминах nginx)
Тогда легче будет сконструировать путь для шаринга.
На сервере структура файлов может быть
- files - адрес хранилища
- - adc/dcf - папка, имя которой сконструированно из имени файла
- - - adcf832dnewjernrr43n5.png - имя файла в хранилище
Параллельно вам потребуется БД для хранения связей
adcf832dnewjernrr43n5 -> Origin file name | Size | Access date | Owner user | smth else
После этого вы средствами приложения сможете
/userfiles/akaldygulov@gmail.com/Pretty_image.png
перенаправлять на
/files/adc/dcf/adcf832dnewjernrr43n5.png
/share/adcf832dnewjernrr43n5/Pretty_image.png
проверять доступ и снова перенаправлять на
/files/adc/dcf/adcf832dnewjernrr43n5.png