На ваш вопрос нелегко ответить быстро. Не существует простого решения на основе PHP, которое вы можете скопировать и вставить за 5 секунд. Функция, которую вы предлагаете, обычно подразумевает некоторую форму переписывания URL, схему маршрутизации или функциональность с этой целью.
Также на сайте с тысячами пользователей, возможно, где каждый пользователь может загрузить много файлов, вы должны задуматься о том, как хранить файлы файлов в файловой системе. Тысячи файлов в плоском каталоге просто не обрежут его.
Хорошо. Вот наивный пример того, как вы могли бы начать решать эту проблему:
Допустим, вы на самом деле храните файлы в виде:
/uploads/<username>_<filename>.<extension>
Прочтите о mod_rewrite и создайте правило перезаписи на своем веб-сервере следующим образом:
RewriteRule ^(.*)/uploads/(.*) getfiles.php?username=$1&file=$2
Это позволит вам использовать URL как
/<username>/uploads/<filename>.<extension>
Создайте php-скрипт с именем 'getfiles.php' и верните файл следующим образом:
<?php
$path = '/uploads/'.$_GET['username'].'_'.$_GET['file'];
if (!file_exists($path)) {
die(
"OMFG! The user tried to access a file that doesn't exist. " .
"I think I'm gonna die!"
);
}
header('Location: '.$path);
Но помните: это только один из многих способов реализовать нечто подобное. Я выбрал этот способ, потому что он очень прост в реализации. Опытный разработчик не будет реализовывать это таким образом. Но это должно сработать.