Я бы посоветовал вам проверить класс выгрузки файлов Verot. Это избавляет от боли при загрузке файлов через php и делает ваш код более читабельным / поддерживаемым.
Вот ссылка на класс и документацию.
Что касается точного ответа на ваш вопрос:
Чтобы дать новое имя загруженному файлу, поместите его в качестве второго аргумента в вашу функцию move_uploaded_file ().
Поскольку вы хотите сохранить расширение, сначала сохраните его в переменной:
$ext = explode('.',$_FILES['uploaded']['name']);
$extension = $ext[1];
Вы можете использовать корневое имя файла для генерации нового имени (здесь с добавленной к нему меткой времени):
$newname = $ext[0].'_'.time();
Скажем, вы загрузили файл, и имя вашей входной переменной формы - "myfile.png", оно станет "myfile_2343544.png";
Теперь объедините локальный путь к целевому каталогу, переменную $ newname и расширение файла, чтобы установить второй аргумент функции:
$full_local_path = 'path/to/your/filefolder/'.$newname.'.'.$extension ;
move_uploaded_file($_FILES['uploaded']['tmp_name'], $full_local_path);