Ответ 1
Я думаю, что короткий ответ здесь нет. Вы не можете повторно заполнять поля для загрузки файлов. Однако вы можете обойти это.
Если файл был выбран и форма отправлена, вы уже получили файл. Что вы можете сделать, так это сохранить ссылку на файл на диске и поместить его в скрытое поле и показать сообщение, чтобы указать пользователю, что вы все еще загрузили свой файл, поэтому его не нужно заменять/повторно загружать. Когда ваша форма будет отправлена снова без файла, вы можете проверить значение скрытого поля и использовать ее для получения локальной копии файла, который они загрузили в последнюю попытку.
Другой способ сделать это - либо отправить форму через ajax (используя либо flash, либо метод iframe для загрузки файла), либо выполнить вызов ajax для проверки формы сначала, а затем подать только как нормальный, если действительный (таким образом, никакая перезагрузка формы, отсутствие потери данных для загрузки файла).