Как запретить срабатывание POST метода?
В upload.php в самом конце сделайте редирект на эту же страницу:
//определяем протокол - HTTP/HTTPS
$proto = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off')? 'https': 'http';
//шлем заголовок для "обновления" страницы без пересылки формы.
//все последующие "ручные" обновления страницы будут происходить без отправки формы
header('Location: ' . $proto . '://' . $_SERVER['HTTP_HOST'] . '/' . $_SERVER['REQUEST_URI']);
exit;
Вообще, это "best practice", перебрасывать редиректом после обработки формы, если не было ошибок при сохранении формы.
Exit в конце прерывает выполнение остального кода.
В сессию какой-нибудь флажок добавляйте, что данные уже обработаны. А вообще, после обработки данных делайте редирект на тот же самый скрипт с каким-нибудь случайным параметром. Тогда при обновлении страницы не будет POST-запроса, будет GET