Вы должны отменить дефолтное поведение формы и отправить ajax-запрос самостоятельно.
form.on('submit', function(event) {
event.preventDefault();
var formData = new FormData(this);
for (var id in queue) {
formData.append('photos[]', id);
}
fetch(...);
});
и чтобы этот url можно было скопировать и отправить к примеру по вк и он нажимая по ссылке попал бы на активированную вкладку отзывов с уже подгруженным файлом
Ну вот и научите свой Opencart при обращении по этому адресу отдавать ваш отдельный файл.
В заголовке вопроса у вас написано, что у вас этот URL уже есть, но он не работает при прямом заходе.
От того, что у вас в браузере как-то там адрес поменяется, поисковые системы его проиндексировать всё равно не смогут.
Так и не надо присваивать - он же будет работать как обычно - пользователь выберет файлы и всё.
Только нужно будет именовать их как photos[][], иначе я не уверен, что браузер корректно соберёт значения. На сервер, соответственно, будет приходить массив массивов с файлами и нужно будет просто два цикла делать, чтобы их все обработать.