Я просто работаю над простой формой на PHP, но у меня проблема, у меня есть много полей в моей форме, и один из них - тип ввода файла, если нет проблем с загруженным файлом, но произошла ошибка в другом поле, Как я могу (на обновленной странице) сохранить ранее загруженный файл?
Изменение: мы поняли, чего вы хотите, но это невозможно, после ввода подтверждения снова введите файл-ввод. Пользователь должен снова выбрать свои файлы, как работают браузеры, для обеспечения безопасности.
Ну, так как вы знаете, что делаете, вам действительно не нужен сценарий, вам действительно нужна помощь/идеи о том, как подойти к тому, что вы хотите. Я бы сделал так:
- Сохраните путь загруженного файла в переменной пользовательских данных сеанса, например $_SESSION['uploaded_file']
, и извлеките его после ошибки.
- Используйте AJAX, другую форму, чтобы загрузить файл, прежде чем пользователь нажмет submit.
Obs: Если пользователь отказывается от завершения формы, даже если он загрузил файл, его файлы будут на вашем сервере, "украв" какое-то полезное место. Поэтому я не знаю, действительно ли это хороший подход, но хороший, будет использовать разные формы, разобрав действие загрузки из информации о форме.
Реальный пример: если пользователь заполняет форму, чтобы быть членом вашего сайта/форума/независимо, просто позвольте ему загрузить изображение профиля позже, только когда его учетная запись действительно активна. Вы могли бы сэкономить немного неприятностей.
Еще один: если пользователь просто хочет изменить изображение профиля, также сделать действие загрузки не имеющим никакого влияния (и наоборот) с его информацией о профиле и т.д. Это проблема сбережения и более подходящее решение.
Но, если вы хотите загрузить фотографию в галерею и задать описание и т.д. Для изображения, вы можете использовать более развернутую проверку, используя javascript/ajax для проверки правильности заполнения полей перед отправкой данных.
Сначала загрузите код, чтобы сохранить значения в SESSION, например:
$_SESSION[name] = $_POST[name];
затем распечатайте его в своих ВХОДАх, например:
<input type="text" name="name" value="<?=$_SESSION[name]?>">
Не забудьте использовать session_start().
Или ищите альтернативы javascript