Есть 3 способа. Один правильный и 2 неправильных.
Первый способ (правильный) - это
переименовать полученный файл непосредственно в php-обработчике.
Второй способ, отправка формы при помощи AJAX. В этом случае вы можете сами указывать имена для отправляемых файлов, для этого понадобится использовать конструктор
FormData для того, чтобы собрать свой вариант формы.
Третий способ, подменять файл на лету непосредственно в поле выбора файла:
document.querySelector('input[type="file"]').addEventListener('change', function() {
if (this.files.length > 0) {
var file_name = 'Новое название.jpg';
if (this.files[0].name !== file_name) {
var new_file = new File([this.files[0]], file_name, {type: this.files[0].type});
new_file.name = file_name;
var dt = new DataTransfer();
dt.items.add(new_file);
this.files = dt.files;
}
}
});
Думаю вполне понятно, что 2 последних способа неправильные. Да, они буду работать, но так обычно не делают.