Все эти ответы предполагают, что проверяемый файл находится на стороне сервера. К сожалению, нет чугунного способа гарантировать, что файл существует на стороне клиента (например, если вы загружаете резюме). Конечно, вы можете сделать это в Javascript, но вы все еще не уверены на 100% на стороне сервера.
Лучший способ справиться с этим, по моему мнению, состоит в том, чтобы предположить, что пользователь фактически выберет подходящий файл для загрузки, а затем выполнит любую работу, необходимую для обеспечения загрузки загруженного файла (подсказка предположим, что пользователь пытается отравить вашу систему всеми возможными способами с помощью своего ввода)