Можете ли вы повторно заполнить ввод файлов после неудачной отправки формы с помощью PHP или JavaScript? - PullRequest
27 голосов
/ 27 июля 2011

Хорошо, вот сценарий:

Пользователю предоставляется форма, содержащая входные данные файла. Пользователь отправляет форму. Форма не проходит валидацию / верификацию по той или иной причине. Пользователю предоставляется форма с выделенными ошибками. Входные данные файла теперь пустые.

Вопрос:

Можно ли заново заполнить входные данные файлов путями к файлам, которые первоначально выбрал пользователь. PHP-решение было бы идеальным, но я также открыт и для JavaScript-решений.

Ответы [ 2 ]

38 голосов
/ 27 июля 2011

Я думаю, что короткий ответ здесь - нет. Вы не можете заполнить поля загрузки файла. Однако вы можете обойти это.

Если файл был выбран и форма отправлена, значит, вы уже получили файл. Что вы можете сделать, так это сохранить ссылку на файл на диске, поместить ее в скрытое поле и показать сообщение, указывающее пользователю, что у вас еще есть загруженный файл, поэтому его не нужно заменять / перезагружать. Когда ваша форма снова отправляется без файла, вы можете проверить значение скрытого поля и использовать его для получения локальной копии файла, который они загрузили в своей последней попытке.

Другой способ сделать это - отправить форму через ajax (используя flash или метод iframe для загрузки файла) или выполнить ajax-вызов, чтобы сначала проверить форму, а затем только в обычном случае, если она допустима (Таким образом, нет перезагрузки формы, нет потери данных поля загрузки файла).

1 голос
/ 14 августа 2017

Я решил эту проблему, позволив пользователю выбрать файл загрузки в качестве последнего поля перед отправкой формы ^^

...